Let's assume we know a certain btc address belongs to Alice and the other one to Bob. If Alice transfers coins to Bob's address we can see that Alice transferred ownership of the coins to Bob.
But if Alice just gives private key to her address to Bob, then Bob generates new address (which we won't know is his) and transfers the coins there when we won't know for sure that the ownership of the coins changed. If we didn't see Alice passing the private key to Bob we have absolutely no reason to think that Bob owns any coins. We see that his known public address is still empty.
At some point, Bob will want to spend the coins on something that he needs. At that point, you'll be able to trace the whole chain of transactions and know that Bob got the coins from Alice. Sure, you won't know that Alice transferred the private keys to Bob, but you'll still see a chain of transactions that starts with money in a wallet associated with Alice and ends in a wallet associated with Bob. The private key transfer doesn't achieve anything at all: Bob could just as easily have opened a new wallet and asked Alice to transfer money there instead of his known wallet, nothing in the analysis would have changed.
True, but only if you monitor Bobs purchases. Funds are anonymous until you see them leave network. And that might be years or decades in the future. And one sale/purchae on uncontrolled exchange breaks the chain.
The chain is unbroken. If at any point you identify the owner of a wallet, you then find out the full transaction history of that person. That is the problem with putting all of the data in an append-only ledger that is pseudonymous.
But if Alice just gives private key to her address to Bob, then Bob generates new address (which we won't know is his) and transfers the coins there when we won't know for sure that the ownership of the coins changed. If we didn't see Alice passing the private key to Bob we have absolutely no reason to think that Bob owns any coins. We see that his known public address is still empty.