Adam is exactly right. I wish I could say I mentioned those details in the talk, but I'm afraid I ran out of time.
Just to re-iterate:
* Most slides refer to 1.4
* We evaluated auto-sharding around 1.5.x & 1.6.0 and it did not work reliably.
* We now use 1.8 for a few remaining small MongoDB datasets.
PostgreSQL has an automatic cost-based vacuum and sophisticated adaptive free space and visibility maps. With log-then-checkpoint writes and MVCC, there's no interruption of the database at all to reclaim page space used by deleted rows.
Cassandra also has a write-ahead log, and flushes it's in-memory representation of data to immutable files on disk, which actually was a pretty brilliant decision. Dead rows are removed during a minor compaction, which can also merge data files together. The compaction is very fast because the files are immutable and in key-sorted order, making it all lock-free, sequential I/O.
In theoryland(tm), in-place updates seem better because you're only writing data once. In realityworld(R), the need for compaction, cost of random I/O, data corruption problems, and locking make it suck.