I don't have a neat pitch for this, so here goes.
Per https://www.tt-forums.net/viewtopic.php?f=32&t=88255 and many similar suggestions / request / discussions in past.
Vehicle newgrf authors like to provide alternate liveries (paint schemes) for vehicles.
These are generally separate from company colour schemes.
So livery choices might be things like
Many newgrfs implement this using 'cargo subtypes' (callback 19).
This use dates back to at least 2006 or so https://www.tt-forums.net/viewtopic.php?t=25144
For players, the options implemented via callback 19 are made via the refit-in-depot menu for trains.
This has survived as a solution for a long time, and is implemented in many newgrfs.
It has a few issues.
An aside, the callback 19 feature has also been used for a few other novelty examples of changing vehicle properties, e.g.
Callback 19 relies on having a cargo in the vehicle so that choices can be made about the subtype.
Background, generally industry sets work well if only one is used, or only known-compatible industry sets are used. When other entities (vehicles, houses) start defining cargos, things go wrong, resulting in broken gameplay. e.g. https://www.tt-forums.net/viewtopic.php?p=1239682#p1239682
When this happens it imposes a burden on grf authors and sometimes core developers in unpicking these cases. For example industry sets have to maintain a list of incompatible grfs.
However the industry case is a side effect and less interesting than the main case of supporting livery choices
What to do?
I propose 3 different options for improving this.
Proposals are in separate items for further commenting
Variants per vehicle, using a subtype property on a single ID
We could also
We may or may not want to permit the newgrf to change the property via CB36