What stops those blocks from needing to be kept around indefinitely?
Nothing. Once you store a block on disk, it will stay there forever - that's the most common implementation.
But you should note that mining blocks consts money, so people won't do this just to eat up your disk space - they prefer to mine a new block to earn 25BTC.
They can though try to create branches forking at low block numbers (where the difficulty is low), but most clients won't accept such an
old blocks, so they won't store them in disk neither.