CoinJoin has questionable anonymity compared to Zerocoin. The reason is that with CoinJoin, two or more users must somehow partner up and forge a transaction together. They communicate over a secure channel to do this. The coins are only mixed among these "partners." Picking partners you can trust is a significant obstacle: how can you know that your partners will "forget" the mixing that happened? One may try to repeat this 10 times with randomly chosen partners, but how can you know that your partners are not all just sock puppets of one malicious entity (on an anonymous network, it is trivial to create as many fake users as you want[1])? If that is the case, then your efforts are in vain.
Compare this with Zerocoin, where you put your coins in an accumulator, and they are mixed with the coins of all users who have put coins into that accumulator, since the beginning of Zerocoin. There would be a different accumulator for different denominations of Anoncoins (1, 5, 10, 50 ANC, etc.).
To put it simply, the more users' coins your coins are mixed with, the more anonymity you have.
I cannot speak to Darkcoin's implementation (or planned implementation) of CoinJoin since I cannot seem to find any specs or code on their Github or their site. If anyone knows, please point me to them.
Notes:
[1] Otherwise known as a Sybil attack:
https://en.wikipedia.org/wiki/Sybil_attack