If I give you a dollar bill with the serial number 100100, it's impossible for you to prove that bill came from me (unless you have forensic evidence of me giving it to you, of course - but that's equivalent to having photo evidence of me typing in my private key to a BTC wallet) . If you find a dollar bill on the street, it's now yours, you can't know anything about its previous owner.
In contrast, a BTC address is a unique identifier for someone who owns the BTC. The blockchain stores all addresses that it ever interacted with, so even if you create thousands of wallets, they can all be-anonymized quite easily if one is, as you can track how money was sent between them.
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.