I think this is that post:
The blog post linked from the original message in this thread points at a 2019 paper that uses the header chain for solving this: you download a selection of “droplets” each represent an xor combination of 1-to-many blocks. You resolve the 1-block droplets immediately, and verify they’re correctness versus the header-chain, then xor-those blocks out of the other droplets, reducing some of them down from an n-block droplet to an (n-1)-block droplet. Because you’re only using validated data to affect droplets from other nodes, punishment is straightforward.
That seems a fair criticism, particularly if the goal here is that every node (including non-listening ones) will eventually assist new nodes doing IBD.
If you’re just dividing non-archival nodes into N groups, then I think you’d just have each node in group k of N store any block whose height h \equiv k \pmod{N}, rather than doing anything more complex? With N=128, then that would mean storing ~6GB per node, and nodes who are happy to store ~44GB could store/serve k, k+16, k+32, k+48, k+64, k+80, k+96, k+112, while remaining indistinguishable amongst the 6.25% of nodes willing to store 44GB, ie the ones who chose the same k.