Blocks aren't pruned. They are stored in geth/chaindata/ancient
directory and you can't delete them because your Geth
is serving this information to other nodes that at any point in time would need to sync just like you.
The only pruning that takes places is State pruning, old state objects are deleted from Merkle Trie as new blocks are added.
The latest addition in space saving implemented in geth
was transaction unindexing, as a part of 1.10 version. Now old transactions are deleted saving about 40GB of space. This is the default.
So, if any option to save disk would exist, it would be implemented, but currently the space is as optimal as it can be.
There is another project that has a goal of optimizing resources called Erigon, so you might to check it
https://github.com/ledgerwatch/erigon