Thanks! It was a fun project. As for why we used bash instead of C++ for the snapshot script, basically, it is because we were automating a bunch of shell commands, which naturally made us reach for a bash script. Since the snapshot is something that only needs to be constructed once (per spin-off), we favored ease-of-coding over speed.
That being said, you could imagine a workflow going straight from blockparser (memory-lean version) to loading balances into the new blockchain's utxos. We opted for an intermediate "snapshot" file because 1) it is relatively portable (2+ orders of magnitude more compact than the blockchain itself), and 2) the file is guaranteed to be exactly the same for everyone using it.
Another contributing factor is that, even after downloading the Bitcoin blockchain, running a full blockparse takes quite a while -- about an hour on my (somewhat dated) hardware. It definitely isn't something that you want every user of a new coin to have to sit through!