This is a great debate and requires a couple of points that seem to get lost in the wishwash of the internet.
- Tables are not a bad thing
- Tables have a real purpose
Before when the internet was new and browsers chugged through html like a drunk chick at a kegger people thought it was a good idea to use tables for design... I mean why not it places your elements in a table.
Well then CSS came along with a cup of coffee and a cold shower and told those browsers to slow down. CSS denotes all the style of a page. This allows your DOM to be separate for styling and your layout to be dynamic. I don't really need to go into all the reasons CSS is a good thing but as for tables it was really important.
If you like a browser treat HTML as a mark up then the markup should actually denote it's content. Having a bunch of images in a table isn't a table at all its just a lazy way to show a buch of images.
With CSS you can now use a table for good things like DataSheets, User Lists, and anything else you would see yourself putting into and Excel Spread sheet. This way all the styling can be done in your stylesheet.
It's not that that tables are bad, now they can be used for what they intended for... tables.
CSS also offers the display: table there is a lot of debate around it but I personally think this is the way to go if you want to style like a table and don't feel like floats. It allows for you to Style like a table in your Style Sheet so you are not actually using a table element.