If I have a temperature, it means coming up with a new standard name for each location (at_sea_level, at_tropopause, at_halocline_top, at_halocline_bottom, etc). That could quickly get out of hand. Of course, standard name is optional so you don't have to use it.
It sounds as though it could get out of hand, but in practice it hasn't in CF standard names. That's because there are not very many "named" surfaces of this kind. Mostly the vertical level is specified with a coordinate variable (height, depth, pressure, etc.), and then the standard name does not indicate the surface. However (a) Some surfaces which are defined in some physical way, like the tropopause, can't be specified as a vertical coordinate, so they have to be named. Naming them as part of the standard name has the advantage that it is impossible to omit this information (if you choose to use the standard name). If there was a separate string-valued attribute to identify the surface, it might be omitted - one more thing which could be defective with the file! (b) Others could be defined with a vertical coordinate, but it's not the most helpful thing to do, I'd say. Sea level, for example, could be called depth=0 or height=0. It's not so convenient for software to have to be aware of various different equivalent definitions. I think that when we say "sea level" we really have a particular surface in mind, and it's not natural to invent a numerical coordinate to identify; it's more natural to name it. Best wishes Jonathan