You should not need to copy and paste the UVs using UV Master, by the way. Just by importing the updated OBJ onto the sculpt, zbrush should detect the same number of vertices and will update the UVs automatically. It won’t even tell you it does this, it will only pop up a message if an error occurs. However this (and UV Master as well) will only work if it is the exact same mesh, and by that I mean the “vertex order”. Two models can look perfectly identical to human eyes and contain the exact same number of vertices in each, but if a vertex from one spot is #952 on one model and #005 on the other, then they are different models as far as a computer is concerned.
What more than likely happened is that your vertex order changed between programs. The cause of this can be as simple as using certain modeling tools inside of Maya, or by exporting from zbrush with multiple polygroups (or without Export: GRP turned off). If this happens, you would unknowingly be unwrapping an entirely different model. When it comes time for Zbrush to update the UVs, it will see that you want Vertex#328 to have U: __ V:___ coordinate and will update that information correctly… except vertex #328 is in entirely different position on the sculpt than it is on the new obj. Your UVs might still look like an unwrapped face, but those faces might belong to a foot instead.
A good thing about polypaint (vertex colors) is that it doesn’t depend on UVs. You can change those around however you want and your polypaint data will still be there in the same state and quality you created it in. A solution would be to export the model back out as a single polygroup (or without GRP), and use Maya to transfer the new UVs onto it (I’m not a Maya user, but I would think it would have the ability to transfer UVs based on nearest vertex rather than copy and paste via vertex number like UV Master would do). Then when you import that model back into zbrush, the UVs should look correct visually and be correct under-the-hood.
Alternatively, there is a different problem that is more common to 3dsMax. In those cases, the vertex order remains the same, but every single UV face is disconnected and flipped. As a result the UVs visually look the same, but every face is flipped creating a faceted look. It’s hard to say which of the two scenarios you are currently facing without knowing more about how the texture is supposed to look in its ungarbled state. Chances are GoZ would fix both issues though.