I recently came across this article that was posted about a year and a half ago and it brought up the issue of web designs built using “div” tags and CSS vs. using tables as if there was still a question. The fact of the matter is that “divs” and CSS are more than just a new way of doing things, it is a more forward compatible (and better) way of putting content on the web for a couple of reasons. Not only do “divs” and CSS promote using semantic markup and proper content structure, but the code used is faster loading in addition to more cross browser compatible which to me ends the discussion of tables right there.
Semantic markup is important because humans and search engines both read your content and it needs to be presented in an organized fashion. When using tables you also commonly end up using in-line styles in your code rather than styling your content from an external CSS file. Using tables and in-line styles will commonly lead to inconsistently styled pages in addition to making updating your site a pain in the future. The other advantage is that using CSS makes your pages load faster (added SEO value there) and makes your code easier to index by search engines, not to mention that if you want your site to show up nicely on mobile browsers, tables can cause a bit of a headache.
In the world of content management systems and dynamic content, tables are also more restrictive since they can sometime break when too much content is added forcing the tables to re-size. Since content management is the way of the web now this is also a huge argument against using tables.
Finally, the main reason you shouldn’t use tables for an entire web page layout is because that’s never what they were intended to be used for. You want to restrict the use of tables to content that really should be displayed in a table format (i.e. using semantic markup) that way when humans and search engines both come across your page, you can quickly and clearly present your information..