My general process workflow at work:
Lowpoly base mesh modeled in Maya.
Base mesh imported into zbrush.
Lots of subdivisions and detail added, resulting in obscene polycount.
Import obj into 3dsmax. Using Graphite Freeform modeling tools with highpoly mesh as the surface reference and create optimized lowpoly model for in-game use.
Unwrap lowpoly cage in 3ds max.
Export lowpoly cage as obj.
Import both lowpoly cage and the descimated mesh from zbrush back into Maya.
Use Maya's Transfer Maps tool to generate normal map from highpoly zbrush mesh.
Delete descimated zbrush mesh.
Set up shaders on lowpoly cage using the generated normal map and textures I make.
Export to engine.
That's my work flow. Yes, I really do use both 3dsmax and Maya.
This tutorial covers the step of getting the zbrush model 'Descimated' or 'optimized' to a point where Maya and Max can actually stomach importing it and not crashing my machine.