Heres the flow as best I can understand it from debugging this.
1) Players AnimInstance is cached off in FPreAnimatedSkeletalAnimationState.
2) Animation starts playing and because bForceCustomMode is true we call SetAnimationMode on the captured SkelMeshComponent. (MovieSceneSkeletalAnimationSystem.cpp - line 777)
3) Since we are changing AnimModes this causes the previous AnimInstance to be cleared and uninitialized. Note that this is the same AnimInstance that has been cached off by the Sequencer.
(SkeletalMeshComponent - line 3722)
4) The Sequencer finishes and restores the cached AnimInstance. This AnimInstance though has been Uninitiaized and is unusable in its current state.
5) Later when attempting to a montage using this AnimInstance you are blocked by the new bEarlyOutMontageWhenUninitialized.
The flow makes sense in the 2 areas, but it does seem like doing a deep copy into FPreAnimatedSkeletalAnimationState (instead of just grabbing the pointer) might be more correct overall.
Also not entirely a blocking issue for us since theres really no reason for us to use Force Custom Mode on the Animation Track to begin with. Just a subtle bug that had pretty obvious reprocussions (i.e. I opened a door and can no longer do any attacks).