We have seen this issue as well. The reason is fairly simple from my understanding. When physics is blended in, the space bases transforms are flipped later, after physics has blended in in USkeletalMeshComponent::PreClothTick(…). However, it is flipped too late. PreClothTick calls USkeletalMeshComponent::BlendInPhysics() which blends the physics and updates the children before flipping the space bases. What happens is that we update the correct space bases when blending the physics but when we update the children, we query the space bases of the previous frame before flipping the matrices when the function returns. In essence, UpdateChildTransforms() uses stale data from the previous frame.
My fix is fairly simple, I wrapped the matrix flip in PreClothTick inside an else to only perform this if we are not registered and I let BlendInPhysics perform the flipping in the 3 places where it makes sense: the top early out if there is no skeletal mesh (probably not required), when there are no bones to blend in (added an else clause) and after BlendPhysicsBones(…) but before UpdateChildTransforms().
The issue is obvious with almost any animation that moves a bone by more than a few mm/cm in a single frame where a child socket has an attachment on it. In our case, the child was a skeletal mesh component as well but the issue could very well be present as well with a static mesh attachment.