I'm not a CSS expert but especially because of how the specificity works it makes it more difficult to use the cascade to override some properties. Any selector that has one ID has higher "priority" than a selector with eg 3 classes. So if you want to override this, you need to use IDs too. And this leads to specificty war: long selectors just to override the specificiy, unmaintainable CSS, too long CSS files for the job.

A very good example of the sort of bugs that using IDs brings is https://bugzilla.mozilla.org/show_bug.cgi?id=992233