I am surprised that the fees are not fixed, are not the cryptocurrencies decentralized? So who controls these fees and why?
Exactly because it's decentralized the fees are not fixed. This way supply and demand rules come in. So it's the demand that somewhat dictates the fees.
When there are too many transactions to be mined, the ones offering bigger fee will be mined faster. And from here, some will offer more and others will prefer to wait longer.
Keep in mind that the fee calculation is related to the size in (virtual) bytes of the transaction and not the amount or value of money sent.
Also keep in mind that the quantity (total size) of transactions allowed in a mined block is limited.