if you share data structures in this way you're introducing source-level coupling between services
but one of the major reasons to break up logic into separate services is to eliminate source-level coupling
a consumer should not need to import service X's SDK in order to use service X, if that is the case then it introduces all kinds of bad situations like "well if i change my service X's behavior in some backwards-incompatible way, it's fine, as long as i update the SDK appropriately" -- wrong
but one of the major reasons to break up logic into separate services is to eliminate source-level coupling
a consumer should not need to import service X's SDK in order to use service X, if that is the case then it introduces all kinds of bad situations like "well if i change my service X's behavior in some backwards-incompatible way, it's fine, as long as i update the SDK appropriately" -- wrong
etc. etc.