It's very strange, i noticed that the second effects (the Move3D in your example) effectEnd handler is never called...!!??
So it never can reverse your Move3D.
If you switch your Rotate and Move effect positions so that the Move3D is in first position (becoming first child of the Parallel effect) it works ....
The problem is that the transform effects don't interact well with repetition. Check out the ASDocs for AnimateTransform, which explain the situation more, but basically all transform effects get combined internally into a single transform effect instance, so repetition on any one of the effects would create problems for the combined effect.
Repetition does actually work on these effects when they are the only transform effect running, because the system takes the shared properties (such as repetition as well as autoCenterTransform) from the first effect declared. This also means that if you set repetition on the first effect (Rotate3D in your example), then that will kick in for all transform effects. This isn't what you want in many situations (such as yours - you don't want to repeat the Rotate3D), so it's easier to just avoid using them when running more than one transform effect in parallel.
In this case, you need to set up two effects to do the job:
<s:Move3D duration="700" zBy="2000"
<s:Move3D duration="700" zBy="-2000" startDelay="700"