Answer: When it's a unique identifier.
Check out this class attribute generate by my beloved WordPress' upload feature:
class="alignleft size-medium wp-image-4590"
See anything suspicious? I sure do. wp-image-4590 is a unique identifier being passed off as a class. Why? I actually have no clue as I'm not privy to the thought process behind that particular piece of code
What I do know is pretty much demands to be an ID. When I teach this stuff to people, I say "If it's unique, meaning there will ever only be one of them, make it an ID. If there's more than one or it's a general descriptor, make it a class." So I look at that code block every time I upload an image and I frown. Then I blow away the whole class attribute away, since I use none of them.
This is just splitting hairs, I know. Using a class like that is basically harmless. But, truth be told, splitting hairs helps me solidify my ideas about the way these things should work. That, in turn helps me improve the way my crew and I do our thing. So? Hairs I split and everyone is happier.
I'm just doing my small part to make the web a better place one nitpicky, semantic post at a time.