Satoshi chose 1 MB block size limit, but he also (unintentionally?) had written another quite rule: a block was rejected if processing it needed more than 10,000 database locks. Because locks are taken per database page, the real limit depended on how each node's files happened to be arranged on disk, so the same block could pass on one machine and fail on another.
That's a better two-sentence version than mine, and yes, unintentionally. The 10,000 lock setting is in the code as far back as v0.1.5 in 2009, so it dates from Satoshi's time, and I can't find anything suggesting anyone thought of it as a limit on blocks until that night. Luke's line in the channel was "it's a bitcoin rule we didn't know about."
One small thing on the order of events. 0.8 didn't remove the rule as a fix, it removed it by accident when it switched databases, and that's what caused the fork. The fix on the night went the other way: the 0.8 miners went back and obeyed the old limit so the chain everyone could follow would win. 0.8.1 then kept obeying it on purpose for two months (the 4,500 txid rule), and only after 15 May was it actually dropped.
The fact that the developers had to coordinate so quickly across different versions makes the incident especially worth studying today.
Agreed. And it wasn't only the developers. The person who made it possible was a pool operator, and he ate the loss himself.