To be precise, what is meant is the overhead of marshalling and unmarshalling every structure that is sent between the "threads". It's not possible to share the (likely discontinuous) byte sequence that represents a data structure in memory.
The drawback is twofold: One is the overhead for the marshalling/sending/receiving/unmarshalling itself, the other is that the same structure cannot be shared and changed destructively from several "threads". E.g. the protocol cache in Roxen can't be shared, it would have to be copied back and forth. To work around that you'd have to invent a protocol to let the other "thread" do your changes for you, but that's quite a different thing from doing changes in the same data structure directly from several threads.