You kids, never giving things proper names. I’ll bet you all have armatures full of bones with names like “bone.0047” too. :no:
Give each object’s UV map a distinctive name first, then join. Your newly joined object will have two UV maps, each containing only the original object’s map. Each section of the mesh can have its own material and its own uvs now.
On the other hand, if you just leave the map with the generic name “UVMap” and join, the new object will only have one map with that name, since both of the original objects had maps with the same name. See the attached example. The object named Smart has two maps, nice and tidy. The object named Dumb has a jumbled mess of didn’t-name-stuff-properly-before-joining.
UVJoin.blend (624 KB) 