Reliably applying a UV map to another object

I’m new to UV mapping and just ran into my first problem I’m unable to resolve. I have a bunch of similar but not identical meshes for which I want to use the same UV map. (That is, the vertices are moved around a bit from object to object, but the objects are topologically identically.) I UV-mapped and textured the first object just fine, but when I copy the UV map to my remaining objects using either Transfer UV Maps or Magic UV’s Copy/Paste UV, the UV faces are sometimes correct, sometimes mirrored in place, and sometimes associated with different object faces. The result is that my texture is applied mirrored, rotated, or on the wrong face. I managed to construct a minimal reproducer using only two, very simple objects:

bad-UV.blend (754.1 KB)

Note the the tops are correct but the other faces are upside-down and mis-mapped. In the UV editor, I see that the object edges don’t correspond to the same UV edges:

obj2-UV-UL obj1-UV-UL

Before transferring the UV map I tried renormalizing faces, sorting elements, and pounding my head against the wall, but nothing worked. Even transferring the UV map face-by-face didn’t help. In cases in my original image in which a face is merely rotated or reflected, I can use FaceFace DataRotate UVs or Reverse UVs, but this doesn’t solve the general problem.

What’s going on? Why are my UV map transfers sometimes getting confused? Most importantly, how I can reliably transfer a UV map from object to object?

— Scott