If you knew what you were talking about when deciding to take that tone you'd know that Primary and Secondary exist for the purposes of properly handling importing from other forum software, which our website has done in the past.
There is no "condescending" tone meant. It's that to frequently the issue IS that people try to force the way groups work from other scripts onto the way it does with XenForo.
This causes issues very similar to what you have seen. I'm well aware of what happens with groups during imports from others scripts as I've done imports from myBB, SMF, IPS and vB.
The point of emphasizing the suggested way was to get it to a point where it's KNOWN to work in the correct manner. When you start introducing variables of "I've changed my primary group to something else and set registered to a secondary" you are playing outside the parameters that are suggested and are the ones frequently used.
I'd assumed that you had already imported and modified your groups to the recommendation. Nowhere in your content did you imply this was a new import that still was using the grouping settings it had from the original importation.... the implication was that was already done. If it HAS already been done (the modifications) then your reflected way of changing primary groups is outside the suggested path of how to implement permissions across multiple groups (ergo the link that was given that advises of the recommended way).
As for cache... are you using CloudFlare or similar? Are you using any add-ons that modify the user banners/groups?
What PHP version and are you using memcached/Redis?
You specifically stated that
They both had Moderator as their primary user group. I changed User 1 to Registered as their primary and added Moderator to their secondary groups, and they display as expected (Moderator red has higher priority)
and that indicated it worked as expected (which using Registered as the primary is what is recommended).
It should still work doing the way you are attempting to do (not using registered as primary) as the priority should not matter which group is primary. It's just easier to trouble shoot when one uses the recommended process.