Generally speaking, you need to polygroup at the lowest subdivision level. You can think about it this way: if you polygroup at a high level, your border is being defind by polygons that don’t exist on lower levels, so when you move to lower levels, ZBrush does it’s best to figure out where they would be. Probably for reasons of speed and memory usage, this is how they are stored. I polygroup just about everything, which is why I don’t use GoZ (since GoZ does not currently preserve polygroups at all). Because good polygroups require good geometry, I usually model or retopologize in another program.
Hope this helps.
Will