Most importantly: it's very easy to end up with a huge CSS file that can't be compressed, and it makes everything more complicated.
Representing hierarchy in the class name makes the output shorter, in most cases, and makes the HTML and CSS code easier to understand. For instance, when you see <div class=title>, you need to go up to find context to understand what that "title" class is. If you have <div class=widget-title>, that's much better. Let alone that generic ("title") classes can lead to problems with conflicting rules depending on their specificity.
By the way, classes at the top level are faster to parse and apply.
Representing hierarchy in the class name makes the output shorter, in most cases, and makes the HTML and CSS code easier to understand. For instance, when you see <div class=title>, you need to go up to find context to understand what that "title" class is. If you have <div class=widget-title>, that's much better. Let alone that generic ("title") classes can lead to problems with conflicting rules depending on their specificity.
By the way, classes at the top level are faster to parse and apply.
This articles expands on some of these issues: http://www.sitepoint.com/beware-selector-nesting-sass