I don't know that much about PoS but here's what Sunny King had to say:
CheckStakeModifierCheckpoints() is just used to make sure the stake modifier computation is deterministic and every node computes to the same value. It's only checked with a few blocks, like the hard checkpoint that bitcoin uses.
It's not actually part of the protocol itself. The reason it was there is because of the complexity of modifier computation there could be bugs that made it non-deterministic. I put it there just so if someone runs into it then I would know a bug exists with the modifier computation.
Peercoin currently has 3 checkpoints added after genesis. I guess you can add them whenever you feel like it,
in connection with client updates for instance.