There might actually be a workaround for this.
I just started dabbling into XNA, but I've been animating for a few years and doing rigging even longer. For my most recent project (in Unreal) we were using a two skeleton system. We used Biped for the control rig (the one we animated with), and a bone rig constrained to biped with position and orientation constraints. This allowed us to set up dummy objects, weapon stand-ins, and all sorts of hierarchy changes on the biped. We then baked the animations on to to the bone skeleton, skinned the mesh to the bone skeleton, and exported those without the biped.
You might be able to bake the movements of the controls onto the actual bones and export that to get the keys you want on the actual bones without having to mess with code.
In Max, in the 'Motion' tab (the one that looks like a wheel), there's a trajectories button. After you've animated, select your whole bone skeleton, and click this button. Select the start and end times for the animation, and the number of samples (this will be the number of keyframes it places for every bone, divided evenly over the duration of the animation). For simplicity sake, if you do a 0-100 frame animation, and specify 10 samples, it'll place a keyframe every 10 frames (100/10=10). Once that's entered correctly, make sure 'Position' and 'Rotation' are checked in the "Collapse Transform" box, and click collapse. This will create position/rotation keys for each bone on your biped at the specified intervals. The bones should rememer this information on export because it is using the raw position and rotation information of the actual bones, not the controls for the bones.
Hope this helps =)