This all started when the lead developer issued an "off the cuff" suggestion to enlarge the block size from 250K to 500K. A miner went the extra step and enlarged the block to 1M, which *should* have been legal. But there wasn't enough system and integration testing. [There was *none* as far as I can tell with respect to this suggested change.] Perhaps the community will learn to avoid untested changes in the future.
It wasn't the size of the block that caused the problem.
It *was* indirectly because of the size of the block. Even at 166 bytes each (or whatever the minimum size of transaction), a 250K block cannot contain 1700+ transactions. And a number of transactions that exceeds the BDB configuration is believed to be the root of the problem. I know hindsight is 20/20, but I will give the developers credit and assume testing all extremes from 1 really big transaction to many really tiny transactions probably would have been in a formal release cycle. No such testing was done, chiefly because this was an off the cuff suggestion, not a formal release.