The status quo with crossing=* is objectively the consequence of multiple errors over the years. [1][2] A fair number of mappers are OK with the status quo, but they don’t quite agree among themselves about what that is. Fortunately, OSM’s tagging standards do evolve over time. crossing:markings=* and crossing:signals=* are an attempt to break out of this stalemate. Additional expressiveness can compensate for any additional verbosity.

It looks like you use iD. That editor’s maintainer has also expressed interest in adopting crossing:signals=* [3], and there are multiple pending pull requests that would do so.

Although crossing:signals=* is a de facto key, there is a draft proposal to extend it with more specific values, in the same way that crossing:markings=* provides more detail than crossing=* was previously able to. [4] You’re welcome to leave some feedback on the talk page.

[1] https://wiki.openstreetmap.org/wiki/Crossings#Street_crossings
[2] https://wiki.openstreetmap.org/wiki/Tag:crossing%3Duncontrolled#Terminology
[3] https://github.com/openstreetmap/id-tagging-schema/pull/590#issuecomment-1308665554
[4] https://wiki.openstreetmap.org/wiki/Proposal:Crossing_signalization