It's a bit like a game of sudoku. A mixin input could have 4 different coins, and technically you can't be certain from the signature which is the real input. But in reality you can do downstream or source analysis and come up with probabilities for whether the prior transactions were authored by the same wallet, or associate with other keys used by other mixin inputs. Every little bit adds to the probability of two addresses being linked, and it really doesn't take many bits of information to confirm or eliminate mixin inputs as being real or fake.
This is notably different from how ZeroCoin operates, where the anonymity set is everyone and it is fully untraceable. However ZeroCoin has problems with respect to performance and deployment :\
It's the same as RSA4096, in theory you could bruteforce eventually crack a key, but in reality it's not a viable attack.
You're just saying abstract things without backing them up with details. Also Zcoin has scaling issues with TXs being 50x of Zcash (another Zerocoin-based implementation)
For another, they hide balances, and they do actively pay attention to the information leaks, and they employ strategies to fight that. When the drug markets were busted, dash and pivx users were discovered, but Monero users were kept hidden.
It's pretty clear to me that they are at least moderately successful where nobody else really is yet. New strategies may come out tomorrow to unmask everyone, I certainly wouldn't bet my own life on Monero's safety, but they overall are outperforming everyone else in a practical sense.
The problem is that there are a lot of knobs to tweak here. Which coins do you pick? They're not all random because at least one of the coins is from your wallet. People have specific usage patterns that give a prior on what output is the user's vs a randomly selected one. (E.g. an output that is 2 years old is less likely than one that is 2 weeks old to be the user's, since most outputs being spent are recent.) In addition, details of the transaction such as how many other coins are selected per signature, reveal what client might be used.
It has been our experience with bitcoin that it is incredibly hard to mask what software is used to generate a transaction. It turns out that there are a ton of things that can watermark a transaction and thereby decrease your anonymity set -- from coin selection to serialization choices to the default settings of optional knobs like fee or locktime. And these generally interact very badly with ring signature systems. If your wallet version makes transactions a certain way, and none of the other mixin inputs you included do exactly the same thing, then it is blindingly obvious which input is actually yours -- the one from a transaction that matches yours in these other respects.