Bitcoin's transaction fees are more complex than flat per transaction. It depends on the size of transaction which then in turn depends on how many incoming payments you have to combine into the amount of BTC you want to send. This has somewhat surprising and unfortunate high-level effect that the smaller transactions you do, the higher are fees for your future ones. The same is true for all cryptocurrencies where you spend transaction outputs (all bitcoin derived ones) instead of moving abstract numbers between "accounts" (ethereum), where the transaction fee is essentially flat and often insignificant. I'm not sure how Monero and Zcash works in this regard.
Edit: tl;dr: problem with bitcoin's transaction fees is that they are not flat, but instead depend on non-obvious technical details of the protocol.