When you do replication, you only create object on the server. You are surely replicating only the pointer, not the object pointed.
So you are 2 distincts objets (client/server) but one pointer replicated. When you set null the pointer, the change is replicated, as expected.
The pointer and the object pointed are not the same thing.
PS : This post is old. You don’t need to replicate subobject like this anymore.