Headers aren't read first during reindex (as that would require multiple passes over the data). As a result the script bypass at if (pindexLastCheckpoint && pindexLastCheckpoint->GetAncestor(pindex->nHeight) == pindex) {
Doesn't work correctly. With libsecp256k1 this doesn't matter that much, though it does make reindex noticeably slower than initial sync if your network is fast.