There are a number of cases that it is supposed to workaround, main one that comes to mind is that Path vs PATH on Windows refers to the same environment variable - so it seems that the assumption is on windows the case of the environment variable was not supposed to matter and so normalizing them to all uppercase made sure that Maps in java worked as expected.
There are a few places in the code that do the uppercasing:
org.eclipse.cdt.internal.core.envvar.EnvVarCollector.add(IEnvironmentVariable[], IEnvironmentContextInfo, int, ICoreEnvironmentVariableSupplier)
org.eclipse.cdt.core.CommandLauncher.parseEnvironment(String[])
org.eclipse.cdt.utils.envvar.EnvVarOperationProcessor.normalizeName(String)
org.eclipse.cdt.utils.envvar.StorableEnvironment.getNameForMap(String)
org.eclipse.cdt.utils.spawner.EnvironmentReader.init()
So either we need to do the uppercasing in more places - or fix all the places so that uses the uppercase workaround and probably change it to a case insensitive keyed map, such as new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
HTH,
Jonah