All it takes for transaction fees to go down to ~zero is a benevolent or a malevolent miner occasionally accepting 0 fee transactions.
Today most (all?) miners accept some zero fee transactions. Yet fees have not gone down to zero. They is a balance between cost and convenience. If there wasn't then ATMs, convenience stores, and overnight mail wouldn't exist as services.
If 100% of miners will accept your txn for $0.05 in fees and 10% will accept your txn for free most rational users will still pick $0.05 in fees on many transactions. Saving $0.05 usually doesn't make sense and in many cases ends up being the more expensive option (due to volatility risk). We see this dynamic right now in every block. There are plenty of "high priority" transactions which include a fee despite it not being required by the full nodes. Unlike low priority transactions which will not be relayed by full nodes unless they include a fee, high priority transactions will be relayed without a fee so they are guaranteed to end up in the memory pool of miners. At that point it is only a matter of time before they are included in a block. The amount of space devoted to high priority transactions is however limited and that means transaction times for unpaid transactions are both long and unpredictable. For many users the short and predictable confirmation times are worth more than the fee.
If someday 10% of the hashrate decided to include free transactions I think the rest of the miners would love that and probably reduce or eliminate the space they currently give away for free to include more paying transactions.