This is strange behavior. Is it possible that the int hash of the parameterID string just happens to mean that the unordermap is maintaining the correct order by chance? When you move into a more production situation where you 100s of parameters, then it starts to show up.
I’m experiencing the same behavior as highlighted in this thread:
“The reason AudioUnit (certainly in Logic Pro, although I’m surprised the JUCE host is doing the same) is showing you the parameters in a different order is because it lists them by alphabetical ID, rather than in the order declared by the plug-in. This also adds the restriction that any new parameters added must list “alphabetically higher” than existing IDs (e.g. “aaaa”, “aaab”), otherwise your automation will be messed up. So Logic will introduce this problem for you either way, unless you create some space between the IDs you use (e.g. “aaaa”, “bbbb”, etc.)."