"You actually didn't intend to ask but asked nevertheless".
It is quite simple, in fact.
In bitcoin-like currencies, your transaction links a previous transaction or a set of previous transactions (where you received the coins) and the future transaction(s) of the receiver(s). This is pseudonymous, in the sense that nobody knows (apart from you broadcasting your transaction with your IP, on your computer, etc...) who you are, you are just a bitcoin wallet address.... UNLESS they find out who was ONE of the previous transaction owners or they find out who was one of the FUTURE transaction owners. For instance, if a previous transaction owner was an exchange, then this exchange knows of course that YOU (Jack Smith) have withdrawn the funds to THAT address, or you bought a smartphone with your bitcoins at THAT store, and they know of course that it was YOU (Jack Smith) who paid them with those coins.
As coins hop from transaction to transaction, and this is fully traceable on the bitcoin block chain, it is sufficient to have SOME "real world identities" along that chain, to be able to resolve most of the identities along. This comes about because you have to combine several of your own addresses to arrive at the right amount of coins to pay someone, and to get back some change.
Imagine you have withdrawn 5 bitcoin from exchange A, to address J1.
Imagine you have done a shady deal with Joe, and got 3 bitcoin to address J2.
Now, imagine you pay a gaming computer for 7 bitcoin at store B. Your wallet will combine addresses J1 and J2 into 8 bitcoin, and send 7 of them to store B, and you get 1 back in change address J3.
Suppose now that you pay a coffee at starbucks C for 0.01 coin. You will use address J3 (and get back 0.95 at address J4), and they know it is you.
Now, suppose that law enforcement caught Willy, the guy with whom Joe did affairs, and got his coins from. Willy doesn't say anything, but they found his bitcoin wallet on his computer and found his addresses (they didn't even need to have the secret key for that). Suppose that the coffee shop works regularly with law enforcement too.
Now, they see that from one of Willy's addresses, after a few hops, the coins (YOUR coins) arrived at the coffee shop:
In fact, the hops were: (Willy) - (Joe X) - your J2 - your J3 - the starbucks C address.
Law enforcement now needs to resolve X, J2 and J3. They know J3, because starbucks tells them: it is yours !
They know that Willy's coins went through you to buy a coffee. But you could have gotten those coins J3 "honestly" from the guy owning J2. So they now have to resolve J2 and X. They know that J2 was combined with J1 to do a transaction (to store B, but they don't even have to know that). There are hence chances that J1 and J2 belong to the same person. Now, J1 is known by an exchange, it is YOUR address.
This is sufficient to know that J2 is yours, and hence that you got money from a guy that did business with Willy. That's reason enough to come and ask you some nasty questions. You cannot deny that you are the owner of J2. You mixed it with J1 which is definitely yours, and you were still the owner of J3 which came out of a transaction. So you MUST be the owner of J2.
The only thing that law enforcement knew, where your interaction with an exchange, your interaction with a coffee shop, and Willy's interaction with Joe.
At no point they knew anything about Joe's wallet (the don't yet know who Joe is, but you are going to tell them if they use rubber hose cryptography), nor about your wallets.
This is the fundamental problem with traceable coins like bitcoin, ethereum, and all the rest.
Now, for mixers. The trick is that many people wanting to hide their addresses from their identities, put their coins in a big transaction where they get them out again. Whether that is a good, or rather a bad idea, depends on how often and by how many people it is actually used. If you mix your coins J2 with S1 and S2, where S1 and S2 are also shady people, then 1) it is somewhat more work to trace the network, but they payoff is that 2) they will catch more shady guys along !
You need more "contact points" to resolve the mixer, but you will also catch more fish !
It is only if mixers are used regularly, by MOST (innocent) people, that mixers help. If they are MOSTLY used by people wanting to hide their transactions, then mixing is actually a bait for law enforcement/TPTB.
Also, mixers are specific entities that KNOW of course the mixing. In as much as they are centralized entities like exchanges, they are more dangerous than not mixing, because you don't know what they do with this knowledge ; if they are distributed entities, you might very well be mixing on an FBI node without knowing.
This is BTW why OPSEC and anonymity go together and you cannot just consider them two different problems.
This is why *optional mixing* such as in DASH or with centralized tumblers, is something that can make your anonymity decrease as well as increase. There are two potential problems with it: 1) the "optional" part, if not enough people use it and 2) the fact that the knowledge exists somewhere out there, in the mixer and you don't know what they do with it (voluntary or even not voluntary, if their OPSEC is not OK).
So mixers on transparent block chains can help, but can also be a problem, depending on how distributed the mixers are, and how much they are actually used normally.
Monero type block chains are different. You could say that at first sight, monero transactions "do a random mix" at every transaction. That would already be nice, because 1) there are no centralized mixers 2) every user uses it automatically all the time. That's already very very good and solves the issues we mentioned earlier. But monero does in fact more. A transaction is not a genuine mixing, but an obfuscation of WHAT is the real previous transaction amongst several.
In monero, you only know that this transaction got its input from SOME of these previous transactions, where only the owner of the previous transaction output knows which one it is, and the others got used (without their knowledge and without them doing what so ever) to obfuscate the signature.
So, when you pay starbucks, starbucks only knows that they got paid, MAYBE from output J3, maybe from output Q, maybe from output R, maybe from output S. When looking into the chain, they see that J3 got a return, maybe from J2, maybe from T, maybe from U, maybe from V.
The anonymity is not total, in the sense that IF law enforcement gets Willy AND if law enforcement uses sufficiently their rubber hose so that Willy gives his secret key to them, THEN they can find out that Willy did the transaction Willy - Joe (X).
(remember that they didn't need the secret key to see what were Willy's transactions, only his unlocked wallet, for the bitcoin stuff).
Now, they can see that X was (maybe) used in a transaction to J2, or maybe in a transaction to M, or maybe in a transaction to N, or ... maybe not at all. They don't know whether Joe spend his money or not, and whether his signature got only randomly used in other obfuscating transactions, or whether there was a genuine transaction.
But there IS an arborescence on the block chain that allows for a path from X to the coffee shop, that goes through J2 and J3. This is still visible, although it could be a fake path, and there are many other paths.
The more transactions there are between X and the coffee shop, the more this web of potentially fake paths becomes dense, but it is not "total".
So this is the kind of anonymity you get with monero.
With Zcash, the anonymity is total. Instead of having a finite set of random signatures at each step, you could say (although technically it is different) that ZCASH is like monero, where at each transaction, ALL signatures on the block chain are used. There's strictly no relationship between X and the coffee shop. If the anonymity is used each time in ZCASH, something I can't figure out. I used to think it was not (that there are also transactions "in the clear" such as with zerocoin) but I don't know now.