It seems that it would otherwise silently skip the rescan for pre-backup used keys that are still waiting to be generated into the keypool?

See also #11249 
if (!block_still_active) {
                    // Abort 
                    // marki
                    result.last_failed_block = block_hash;
                    result.status = ScanResultFAILURE;
                    break;
                }
                for (size_t posInBlock = 0; posInBlock < block.vtx.size(); ++posInBlock) {
                    SyncTransaction(block.vtx[posInBlock], TxStateConfirmed{block_hash, block_height, static_cast<int>(posInBlock)}, fUpdate, /*rescan
                }
                // scan 
                result.last_scanned_block = block_hash;
                result.last_scanned_height = block_height;
                if (save_progress && next_interval) {
                    CBlockLocator loc = m_chain->getActiveChainLocator(block_hash);
                    if (!loc.IsNull()) {
                        WalletLogPrintf("Saving scan progress %d.\n", block_height);
                        WalletBatch batch(GetDatabase());
                        batch.WriteBestBlock(loc);
                    }
                }
            } else {
                // could 
                result.last_failed_block = block_hash;
                result.status = ScanResultFAILURE;
            }
        }
        if (max_height && block_height >= *max_height) {
            break;
        }