With all due respect, contrast this limit (or any limit) with unlimited.
Nobody (well nobody with influence to make it happen) has proposed unlimited blocks. 20MB is just as finite as 1MB and so is 1GB.
It does indeed prevent spam attacks.
No it limits the severity of the damage that such an attack can cause. It provides an upper limit not a prevention. Many corporate wire account have an upper limit on the value of wire's that can be sent in one day. That doesn't prevent a fraudulent wire transfer but it does prevent the most the company could lose due to such fraud. The bean counters at a company will impose a limit that balances the needs of the company vs the loss the company could face. If the upper bound of the loss is less than what would cripple the company than no single compromise could bring down the company. The block limit is the same thing. It is saying "worst case scenario, how much damage are we talking about?". How much is a good question to ask but you have to be asking the right question. The question of what limit prevents spam is the wrong question but the limit doesn't prevent spam.
and the proposal is for 16x the current risk and x16000 over 20 years.
In nominal terms but then again in nominal terms but the cost per unit of bandwidth (and cpu time, memory, and storage as well) falls over time. I mean even 1MB blocks would have been massive 20 years ago as well when the most common form of connectivity was a 56K modem.
So the problem could expressed as both a short term and longer term problem. What is the maximum block size that could be created today without exceeding the bandwidth resources of a well connected node? If it is x and bandwidth availability per unit of cost increases by y per year, then in n years a block size of x*(1+y)^n presents no more of a burden than a block size of x today.
For the record I think Gavin's proposal is too aggressive. It uses Moore's law but bandwidth has trailed moore's law. A 20% YOY increase more closely resembles bandwidth availability over the last 20 years. Also 20MB as "x" is pretty aggressive as well. So something like 11MB * 1.2^n gets us to the same place (~16B) in 50 years instead of 20 and with a higher confidence that bandwidth requirements will grow slower than bandwidth availability. Still I got a little off track no matter what limit is adopted it doesn't prevent spam. Economics and relaying rules prevent spam.