The following probably captures community practice:
a) If the type is truly arbitrary, such that there is no meaningful info to add beyond the positions it occurs in the type, then give it an arbitrary name, like 'a', 'b', or 'c'.
b) If there is a convention associated with a type or class that occurs in the type signature, to which the type variable is a parameter, then use that (usually one-letter) name.
c) Otherwise, use a longer name.
You seem to be making the case that (b) is confusing. You may be right, and I have no particular desire to defend the current practice. But if you're wondering where one would be expected to find the meaning, that's it: find the primary type (or class) to which it's a parameter, and there is usually a convention set forth there.