tony wroteThe issue is that the scale change is inherited in screen space.
No, scale is always applied along the scaled bone's local axes. It only appears to use world axes because your hip bone is rotated to match the world axes.
The scaling that I'm doing in the animation is actually done on the hips and that change is inherited all the way down the leg. As the hips get wider the left leg scales properly, but the right leg inherits the scale as screen space horizontal scaling rather than scaling local to the bone. What I expected to happen is that the scaling is inherited as a bone scale instead of a screen space scale.
Scale is applied to child bones in the direction of the scaled bones axes. Open spineboy and scale the root bone on one axis. The whole skeleton is squashed. Imagine if scale worked like you want, scaling the root bone would cause spineboy to get weirdly stretched, but not in any useful way.
Scale used to work as you would like (solely to simplify the math and edge cases skewing scale brings), but it was much less powerful and meant skew was not possible.
Even if I add an extra bone in before the leg to break the scale inheritance, the leg itself can still bend so I have the same issue between the upper and lower leg when it is bent.
If you scale the hip and the legs inherit that scale, it will not work like you want. The direction the legs are scaled comes from the direction of the hip bone. As the leg bones rotate, they will change size.
Shiu's project adds a child to each IK bone so inherit scale can be disabled, then attachments go on that child. This is reasonable. I don't think the transform constraints to keep the legs in place are necessary. If you have attachments on the hip you need to scale, you can use the same approach and add a child bone with disable inherit scale.