Thing is, it needs to run in FixedUpdate because it calculates the target positions for the joints and that only needs to be done before each PhysX step. Doing it in Update would just increase the calculations when there are frames between fixed frames.
Also, PuppetMaster doesn't just run in FixedUpdate. Although I'd like there to be something like PuppetMaster.Simulate(), there can't, because Animation runs at it's own time, PhysX runs at it's own time and frequency and PuppetMaster must do stuff like read the animation and feed it into the physics in between, so therefore it's update cycle is also cut up to pieces. Normally PuppetMaster reads the pose in LateUpdate, after the animation, then in FixedUpdate it feeds it to the physics. If your Animator is in Animate Physics mode, it will update the Animator, read the pose and feed it to the physics in FixedUpdate and disable the Animator so it would not be updated again within the physics step. It is messy, but the only way (that I can think of) this kind of stuff can be done universally with the way Unity is built.