Why?
Lots of reasons, but currently the main one for me is Bootstrap in a CMS. Users want to do funky stuff, I want them, wherever possible, to do them through the CKEditor UI rather then having to go into source view.
Implementation is currently patchy and inconsistent - a user can add a class to a table but can't add one to a list or listitem.
I can find specific feature requests for this (img etc) but can't see anything promoting this as a general design principle.
To sum up in a single sentence:
"If I can add an element via the UI, I'd like to be able to add a class to that element"
Or a possibly more practical compromise or step in the right direction:
"If I can right-click an element a see a properties option, I should be able to add a class (and, probably an ID) to that element"
Reasonable?
I think that such a feature
I think that such a feature request already exists, but as long as IBM or Drupal doesn't ask for it you shouldn't count on the core developers creating it.
Creating a plugin won't be hard, I did it for the old FCKeditor and someday I will have to port it to CKEditor