Google for "Tables for layout is stupid". Tables are a pre-formatted fixed grid. Tables are not flexible. Items in table cells cannot change positions easily. Data in tables must be completely loaded before displayed. The guy who originally came up with the idea wrote an article that says, "The web is ruined and I ruined it." Google for that. Asking this question is like asking why we don't ride in buggies with horses anymore. Don't ask stupid questions.
Well, "the benefit of using nested divs" is kinda a problem. While you'll see thousands of nested divs on crap like templates, seriously I doubt you'd see any benefit (whether in code or in loading time) if a table were taken and all the td's replaced with divs. If you're doing that much nesting of anything, you're likely doing something wrong (except in specialised circumstances). There are benefits to applying CSS to tables, rather than inline styles on tables, sure. That is indeed a completely separate issue and yes, you are saving both coding and loading time by styling your tables with CSS rather than inline styles like <td width=75> junk. That's the only thing "a stylesheet has to do with it". Divs do not load faster than tables per se. Tables may take a small additional amount of calculating time due to the way free tables' widths and column widths are set... if you say table-layout: fixed, this extra calculation is removed (only done once, for the first row I believe instead of every row). The reason not to use tables is pretty simple: <table> means the data inside is tabular. If it isn't, then you don't use a table. You use whatever HTML tag is appropriate. Since HTML sucks in this regard (often there is no element that quite properly defines what the data is), you sometimes find yourself using "close-enough" elements instead. Oh well, only way to do better is with XML or something. Or bloating your code with multiple classes so the one device out there who understands microformats can see more metadata. Divs are for grouping data just to group. It means a page division, a document division, a random chunk of data on the page. Most of the time, it's a hook for CSS styling. You have a chunk of data that you need to group for styling: it needs to all be on the left or right side, it needs to only be x wide, it needs to all be in hot Barbie pink. Those are CSS reasons and you're grouping the data not for semantic reasons (they don't need to have any reason to be grouped based on what the data IS). Since div doesn't suggest anything more than "block division" it's better to use than a table for loose chunk grouping, since table means "tabular data inside". Lawlz I remember when I read that, years ago. "ALT tags" snort. Still, excellent article. Everyone in this thread should read that if they haven't.