I would argue, service, not process :-)
It's quite simple if something communicates through shared memory, it should probably be in the same container. If it doesn't then that's NOT a reason to keep it in the the same container, but I don't see how it justifies the work of splitting it up....
Absolutely for anything that uses shared memory for IPC, but then you basically have threads pretending to be processes. ;-)