Why does Bitcoin need transaction fees prior to hitting its maximum coin limit? I have a question regarding the theory of Bitcoin . Why does Bitcoin build in transaction fees before it hits the maximum allowed amount of coins?  That is, shouldn't the reward of coins for mining a block be enough to keep the system going?  In addition to the trouble we're seeing now (a high value of Bitcoin makes doing simple transactions uneconomical), it seems like building in a transaction fee taht the user can select would rig the system such taht higher fee transactions would get prioritized over lower-fee ones, which would restrict some people from using Bitcoin.  I guess all cryptocurrencies do this so there is no way of avoiding it.
One reason behind a transactions fees is to make spam attacks expensive.
Without fees, a malicious party could create a lot of no-fee transactions for a DoS attack on blockspace. And without fees a miner wouldn't be incentivised to include the highest fee transactions in a block. He could attack the network by mining empty blocks or including spam transactions. (e.g. transactions with clearly and solely exist to bloat the UTXO-set or to fill up blocks).

And correct - with a high enough transaction fee some people in e.g. third world country's can't pay for the transaction. However enabling users to select a transaction fee is necessary. A user that doesn't need fast confirmations can pay a lower fee than a user with a need for an instant confirmation. Thus a fee-market can develop. 

This might be an interesting read regarding this topic:
The Fee Market Explained by Jimmy Song