Digging a little deeper, the issue seems to be caused by the following:
if (OwnerComponent->AttachParent)
{
OwnerComponent->DetachFromParent(true);
}
Located in BodyInstance.cpp in the SetInstanceSimulatePhysics function, if I comment it out, then it works exactly the same as my workaround above.