I'll give the standard canned response: tables are fine... for representing tabular data.
If you mean using tables for layout, well, that's discouraged. Anything that can be done with a <table> can be done without a table using CSS, but the converse is not true. For example, you could do something like:
Or you could do something like this:
<div class="col-md-4">SECTION A</div>
<div class="col-md-4">SECTION B</div>
<div class="col-md-4">SECTION C</div>
Note, those class names come from Bootstrap
[getbootstrap.com] and would give you a 3 column layout with Bootstrap (though there are plenty of other options for achieving this as well), with each column taking 4 (the 4 in "col-md-4") grid columns out of 12 (4/12 == 1/3).
Now, suppose I later decide that I want SECTION A to display on the right instead of on the left, but I want that content to appear first in my document structure for SEO purposes. With the table approach, I don't have any options... I need to modify the HTML to move the first column to the end, and the order of the content will not be what I wanted for SEO purposes:
But without tables, I could use CSS (the presentation layer) to display the first column on the right, and I don't need to touch my HTML content/structure at all. It might be as simple as putting this in my CSS:
Long story short: avoiding tables for layout will give you a more flexibility, and will be easier to maintain.