You use semantic tables to get a grid, such as a layout. The reason this is wrong (and frowning) is mainly due to the fact that the layout information is in the wrong place. Html should be used for semantics (content without appearance), and style should be executed in css (look without content). Therefore, only if the information is tabular, you should use the table tag.
However, the question is good, because the really good alternatives are still around the corner (see the suggested CSS layout mechanisms below).
How do you now if you should use a semantic table?
- Each line should represent some topic of the same nature as other lines or topics related to peer topics.
- Each column for each row should be associated with a specific aspect of the topic.
- The decision to place some information in a cell should reasonably be based on 1) and 2), and not on aesthetics.
Modern CSS alternative
W3C has some upcoming solutions. Currently, Chrome, Firefox, and Internet Explorer have one closest need for you ( http://dev.w3.org/csswg/css3-grid-layout ). This CSS is what you are looking for. This winter will be available in all smokers new browsers. So, over the next few years, you should use older (and more bulky) CSS (see below).

Another is CSS Flexbox ( http://www.w3.org/TR/css3-flexbox ).
These specifications are new for general use, though, but that is how these layouts will work correctly.
Current CSS mesh alternative, e.g. layouts
I would use a CSS grid to avoid tables today. You can use this code as a starting point.
http://simplegrid.info
Using CSS, which works in all browsers, as in the example above, is a bit more, but it works in all browsers today.
source share