It seems to me that people are avoiding both the core issue and its solution.
A standard is what allows people to write software that can be ported without having to reassess every detail of the program. To take C as an example, the standard defines what identifiers look like, which identifiers are reserved words, and which identifiers are reserved for implementation-specific use, and thus which identifiers can be used freely by programmers. What seems to be the case with sh-style shells and Posix is that all-caps variable names are subject to implementation-specific use, and so users should not use them except when using them in the way that is specific to the implementation the script is to be executed on. This principle isn't particularly tricky, but what is missing is a statement of this principle in the documentation. Dale