When you pull up entity_get_info() all the entities have a 'label' under 'entity_keys', except for user entities. This is obviously because user entities provide a label_callback, which is preferable to use. However it is not always practical to load entire objects, so it would be useful to still know where that label comes from when doing a query. In my case it is for the purpose of autocomplete matching.

It is already common practice for modules that filter by users to target the 'name' field (see the 'references' module). It is just not possible to gather this information from entity_get_info() for more dynamic listings of entities, so it has to be handled as a special case. Yes, filtering by the 'name' field is not compatible with certain contrib modules that rewrite the username, but that's kinda their problem.

The logic of entity_label() already gives priority to label_callback over a label entity_key, so this function would still function the same if the entity_key label 'name' was added to the user entity info.

I am posting for 7.x because it should be a minor api change that doesn't bung anything up? But I would accept doing a special case if this is to be changed in 8.x.