The code snippet posted by gavinandresen is run against each block as it is verified. A new client will download and verify each block in the chain in order from the beginning. If only the most recent checkpoint is included, the client could download and verify a large number of 'incorrect' blocks before discovering that it has been following the 'wrong' fork of the chain, wasting a lot of bandwidth and CPU time. (A 'wrong' fork in this case is completely valid with the exception that it isn't the longest fork. If I understand correctly the client will eventually find the 'right' fork anyway, checkpoints will just ensure it happens as quickly as possible.)