Development can choose to chime in, if they so desire but you aren’t just using two groups. You are modifying the behavior of those groups to create ad-hoc tags on demand. Tags have specific behaviors and limitations and should be handled in the same fashion as ordinary tags.
In fact, in your scenario I see no useful point in using group tags when ordinary tags would be sufficient. Even tags applied to a parent group and and inherited.