Privacy means only selectively revealing yourself to the world. On-chain transactions require absolute transparency and clarity for everyone to validate them. The two are incompatible.
Discussion
What're we going to do about it?
Privacy has to exist where no one can see what you're doing. Transactions done on-chain have universal visibility, so naturally, transactions done off-chain will have limited visibility, and therefore more privacy.
The general idea is to construct an on-chain transactions such that many transactions compressed into it. Side chains and lightning work on this principle.
Privacy doesn't always have to be trustless. You can gain privacy by getting someone else to do transactions on your behalf. Exchanges and eCash mints work on this principle. The lightning network provides a trustless way to get others to transact on your behalf too: if you send a payment through an intermediate node, you can gain a bit of privacy.
Or we could consider using a coin that has privacy at the blockchain level (like Monero).
Note that I'm not saying that Monero is better or that it is the solution, just that I'd like to know what the problem with it is.
My problem with it is simply to do with what I said. If I want privacy, I'm not sending data about my transactions to everyone on the network, no matter how anonymous it is. Metadata fingerprinting will eventually kill your privacy.
I'd rather have the guarantee of a payment on Bitcoin no matter who knows about it than the risk of Monero eventually dying because it traded off too much security and decentralization for base layer privacy.
It's a matter of my time preference in the end. Monero is catering to a group of people who want higher layer functionality now and is making trade-offs to do it. I don't want those trade-offs, so I'm willing to wait for privacy tools to be built on Bitcoin, which has the strongest base layer. Perfectly good privacy tools and techniques existed before Bitcoin, so it's not impossible to remain anonymous if you absolutely need to.