I'm not quite sure that's a problem. It's just that under the current set of rules bitcoin is running at "full" capacity. So if miners included zero-fee transactions (which they can) they would be doing it at a direct cost to themselves (as they could've included transactions with fee).
One way to solve this would be change the block-limit from a static 4M weight, to one that varied depending on how many "coin days destroyed" for instance. This might work in theory, if you were careful to design the rules to not encourage backchannels for transaction creators to pay miners out-of-band, but in practice it would never work:
a) You'd never get consensus on such a change
b) It potentially makes coin selection & fee selection for transaction creators a complex bitch
c) It makes transaction selection for miners more complex
b and c seem solved through some algebra and code.
a seems like it could be solved by a really rich person.
----
It seems like bitcoin isn't going to be able to have zero fee transactions again.