Why do we have to pay fees for transactions since miners have a reward for blocks they mine (5 per block)?
Having no fees is possible, if all miners decided to accept transactions with a gas price of zero.
But without fees, the public blockchain can easily be attacked: the blockchain would be bloated with whatever content people threw up on it, as well as whatever computation people decided to write. Spammers would take control of the blockchain and it would be very difficult for legitimate transactions, that may only occur occasionally, to get through.
Fees limit the number and type of transactions that need to be processed, and also help miners determine which transactions to process first.
There's also the possibility of mining rewards becoming zero, and fees will then be the only revenue for those processing blockchain transactions.