Well, the question is, should we validate the genesis block?
I don’t think so, the genesis block is hardcoded, no need to check it redundantly from many computers.
So this is more moving that check out of consensus than “moving it to the checkpoints logic”.
But of course, if your the tip of the chain index you’re using (your pindexPrev) is the genesis block (that is, if you’re validating the second block), you can skip the other checkpoint tests.
What you want to check is that your chain index contains the genesis block. Or with checkpoints, you may even want to just check that your chain index contains the previous checkpoint (you have to be certain that all your checkpoints contain the genesis block when your hardcode them).
In that sense you can see the genesis block just as the oldest checkpoint possible.
But thanks for bringing this up, this is the only change in logic and what needs discussion.