Well I think that's the point really isn't it? Eventually when the block generation reward drops to zero the idea is that only transaction fees will be paid. The reason is that the original design assumption is that miners/pools will only process transactions with fees attached because there is no incentive to include the ones that don't. The block generation fees are really just a quite successful strategy to attract the necessary hashing power to the network to make it secure enough to resist attack.
Currently the incentive to include transaction that have no fees is that if two block solutions are found in a near tie then the solution which has processed the most work will be accepted by the network. However, when there is not an incentive to find a block for the sake of finding a block alone then you can see how it may not be in a miners best interest to include transactions with no fee.
Also as I understand it the design of the system is such that we are only hashing for a result based the block header. This should mean that we won't run up against a limit to the number of transactions processed in a block. If this were an issue I would also expect someone to be pointing the flaw out in this forum which I haven't seen yet.