Da quello che ho capito (non ne sono sicuro al 100%) servono soprattutto ad evitare che qualcuno, reiniziando a minare dal blocco 1, inondi la rete di molti blocchi inutili e quindi occupi con catene-spazzatura gli hard disk dei nodi. Con i checkpoint si velocizza la sincronizzazione alla catena principale "corretta" scartando subito le catene che non passano per questi checkpoint.
Ovviamente come molti in rete hanno osservato in questo modo si introduce un elemento di consenso deciso da pochi - gli sviluppatori del codice - contrario alla filosofia decentralizzata a cui si ispira il sistema Bitcoin.
Diciamo che il rischio di centralizzazione è mitigato molto dal fatto che utilizzano come checkpoint blocchi molto indietro nel tempo.
Penso che se qualcuno fosse in grado di creare un fork con una catena che andasse ad annullare tutte le transazioni degli ultimi 10-12 mesi, anche se dal punto di vista dell'algoritmo avrebbe ragione lui, sicuramente per la stragrande maggioranza della comunità questo non sarebbe accettabile/auspicabile (altrimenti il Bitcoin da uno dei sistemi di pagamento più veloci diventerebbe uno dei più lenti del pianeta, non potendo considerare definitive neanche transazioni con migliaia di conferme). Per tagliare la testa al toro (e soprattutto per evitare inutile spreco di tempo e risorse nel momento della sincronizzazione dei nuovi nodi) hanno anche secondo me fatto bene ad inserire questi checkpoint.
Diverso sarebbe il discorso se si decidesse invece che tutti i blocchi dell'attuale catena principale che hanno più di N conferme (con per esempio N = 100) diventassero "definitivi".