Transaction fees on a blockchain are not set by a company. They are the result of an auction for limited space, which explains everything about how they behave.
The mechanism
Each block holds a limited amount of transaction data and blocks arrive at a fixed rate. That creates a fixed supply of space per unit of time.
Users attach a fee. Whoever assembles the block includes the transactions offering the most, since they collect the fees.
When demand is low, a small fee is enough. When demand spikes, everyone bids up and fees rise sharply.
Why complex transactions cost more
Fees are per unit of computation and data, not per transaction. A simple transfer is cheap. Interacting with a complex contract requires far more computation and costs proportionally more.
Why fees spike
Any event driving many people to transact at once – a token launch, a market move, a deadline. The supply of block space does not increase, so the price does.
How to pay less
Transact when demand is low. Fee trackers show current rates and typical patterns by time of day and day of week.
Use a layer 2 network, where fees are a small fraction of the main chain.
Set a lower fee and wait, if you are not in a hurry. Most wallets let you choose speed against cost.
And batch transactions where the interface allows it.
The stuck transaction
A fee set too low may sit unconfirmed for a long time. Most wallets offer a replacement at a higher fee, which is the standard fix.