The industry standard is splitting it into 2 parts, as you put it.
Normally these things are named the "Control rig", which is what the animator uses to get his animation done, optimised for usability. And the slave rig, the ones you export to the engine together with the mesh.
The reason people usually do this is because engines (normally) do not know how to interpret anything else you use in your rig. They do not understand constraint/curves/conditions etc., so if you would export all you would have a plethora or useless empty nodes.
The pipeline I suggest for getting character animations from maya to an engine would be, in simple steps:
- Build character mesh/texture
- Build rig with controls, and a slaverig bound to the rigbones, which in turn are driven by the curves
- Bake animation of the slaverig
- Export Slaverig and bound mesh in FBX (this is sufficient for both Unreal and Unity)