Some rely on shared secrets, some enable wallets to communicate and build distributed trustless mixing mechanisms (which is exactly what Monero says it does). You don't need distributed trustless mixing mechanisms in the protocol to have that, you can implement the same in wallets.
CoinJoin is not scalable. It can be jammed by Sybil attacks. It has a timing simultaneity requirement that means it is not autonomous, not end-to-end, and failure/hassle prone.
The only way to do it correctly is put on chain. Sorry you are technically incorrect.
Zerocoin is an example of a true innovation as I see it. Zerocoin does not rely on mixing as Monero does, but implements true removal of all history. This is something that neither Bitcoin nor Monero can do. If someone made this, I'd seriously consider it.
Zerocoin doesn't allow you spend any coins until you remove them from the anonymity accumulator.
Perhaps you meant Zerocash. Zerocash has the problem that you can never know if the setup keys were compromised allowing unlimited minting of coins because the money supply can not be known. That is unacceptable for a store-of-value.