I was reading the archival node requirements on this article and the Erigon execution client is much smaller than Besu, Geth, and Nethermind (2.5TB+ vs. 12TB+). How is it so much smaller?
It's the database. There's a very detailed description of the different layout between erigon's and geth's database. If I had to sum it up I'd say that erigon is able to use storage space much more efficiently e.g. by using an own table for the History of Accounts. This is comparable to the concept of normalisation in relational databases, I guess. The database engines are also based on different data structures (lsm tree vs. b+ tree), but this has only a minor effect on the storage. However I'm also rather new to erigon's codebase and hope to see part 2 of Giulio's article in that matter. I'm sure he could explain it much better than me.