Desync bug with physics sphere

I have an object (call it item) which I want to sometimes move like a physics sphere. I made a template like this:

Physics Sphere
  |- Child

When needed, I instantiate the template and make the item a child:

local physics = World.SpawnAsset(propPhysicsSphere, {
	position = item:GetWorldPosition(),
	rotation = item:GetWorldRotation(),
})
item.parent = physics

In singleplayer preview it works as expected. In multiplayer preview and after publishing, the item position seems to desync between client and server.

In more detail, it works fine the first time, and I don't see any problem server side. However when I move the item to a second physics sphere at position p, and the sphere then moves to position q, on the client both item and Physics Sphere stay at p, while Child moves to q.

I made a minimal reproduction example:

To work around the problem, each time I create a physics sphere, I also clone the item and destroy the old one.

I hit a similar issue in another game. After playing around with it, I wonder if this is due to some invalid optimization. eg when the template is instantiated, the server decides only to sync the position of Child to the client (because Physics Sphere itself is invisible). However the client needs the position of Physics Sphere to update other children added later.