Every block mined comes with a gas fee which determines the speed and verification of the transaction made. Putting 0 as a transaction fee means no block is mined, hence no transaction can be made. Also, service providers which include the wallet developers and exchange developers earn from these transaction fees.