Trivialized example: a friend and I split a single bitcoin each and send half to address A and half to address B, and we each control one address. Who owns A and who owns B? If A is used to buy something, am I the buyer or my friend? Since the private keys are generated offline, the fact that two sources sent to both A and B is all the information that exists. I've "tainted" both addresses, anyone can see that, but that's all.
But even when done correctly, odds are you still expose your identity through your use of the coins in the future. So you run through a random number of mixers, and then you behave extremely carefully, since there's some taint to everything and someone could be watching any of a billion addresses for signs of you (shipment to your house, for example). Given enough connections, you can get pretty reasonable probabilities and start forming deeper and more confident paths.
i.e. Me and you both want to launder coins, so through this mixing service we essentially swap coins. Now my spends get traced to you and vice versa (obviously this works a lot better with more people involved)