I modeled this scope the same way I model all my other work: using a CAD/Blender live boolean workflow. For these two scopes in particular, I used Plasticity for modeling, MOI3D for exporting, and Blender for the low poly. The high-poly was derived in ZBrush using the process: DynaMesh > Polish > Decimate.
For the topology, I exported the mesh using MOI3D and fixed the low poly in Blender. Some of the add-ons I used were Resample Mesh, LoopTools, etc. I always unwrap in Blender, straighten UVs using TexTools, and pack them with UVPackmaster. As for texture sets, each sight has its own UV set, since this is part of a weapon with removable attachments.