The most important thing is to not rush into finding a solution. This is how bureaucracy is created, and one of the worst things that could happen to Bitcoin. One imperfect solution on top of the next. The "no empty blocks"-rule is an example of this, in my opinion. Generally, when we observe misbehavior like this, we shouldn't really be asking ourselves how to prevent it. We should be asking ourselves: why does it occur in the first place? There are numerous ways we can prevent this from happening, but if we don't solve the fundamental structure of incentivizing cooperation, we have solved nothing.
It seems to me that the simplicity of the situation is that for this particular miner, the reward for including transactions in a block is not worth the effort required to do so. This is not really surprising, given that fees comprise less than 0.15% of total block reward (using the newest post as of this writing: 174195). It seems obvious that this is not due to - as some speculate - the cost of processing power, ie. doing the signature check. This is obviously a tiny effort both in time and power costs. The real cost is maintaining a block chain. This requires first downloading over 1 GB of data and subsequently updating this block chain with every newly incoming transaction (which in itself requires connections to - preferably - multiple nodes). This is quite a task for a decentralized botnet.
There's a simple way to mitigate this though: start paying more fees
![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)