You assume too much
You often find programs generated by CMSs (such as wordpress) are just a mass of nested divs and almost impossible to debug. I suppose that's the price you pay for using off the shelf systems that try to cater for every eventuality.
It's the same with grid systems and you have a mass of code just in case you might want something later.
Streamline code is always more efficient in every way and as clearly explained in the posts above you just use the right elements at the right time. You just use what's needed. Mo more or no less.
A prime example of redundant code is this:
In 99% of cases the div is redundant and the ul could have been the main container for that section and styled accordingly.
This is also bad:
<div>My page Heading</div>
<div>My content goes here</div>
<div>more content goes here</div>
It should be:
<h1>My page Heading</h1>
<p>My content goes here</p>
<p>more content goes here</p>
Although both are valid only the latter is semantically correct and instantly recognisable.
Divs are basically divisions of content and you use them when you need to group elements together or when there is no other suitable html element available for the task in hand. It's still good to divide the page into sections although sometimes you could get away with out it doing so you should just do it where appropriate (e.g. header, footer, content etc).
Trying to debug a page that is all divs is a nightmare and is almost as bad as trying to debug nested tables as you just can't tell where you are or where the tag belongs. In a well structured page you can just look at it and know what its all about just by reading the html.