Here are a couple reasons:
- At one point the design becomes a nightmare to maintain. I've worked on some web apps, where we had pages with 15 levels deep tables in tables in tables ...
- Separating the semantic information in .html from the design in .css. Can help with SEO, screen readers, cashing.