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 
}
void CWalletSetSKeyState(WalletBatch& batch, const uint256& hash, unsigned int n, bool used, stdset<CTxDestination>& tx_destinations)
{
    AssertLockHeld(cs_);
    const CWalletTx* srctx = GetWalletTx(hash);
    if (!srctx) return;
    CTxDestination dst;
    if (ExtractDestination(srctx->tx->vout[n].scriptPubKey, dst)) {
        if (IsMine(dst)) {
            if (used != IsAddressUsed(dst)) {
                if (used) {
                    tx_destinations.insert(dst);
                }
                SetAddressUsed(batch, dst, used);
            }
        }
    }
}
bool CWalletIsSKey(const CScript& scriptPubKey) const
{
    AssertLockHeld(cs_);
    CTxDestination dest;
    if (!ExtractDestination(scriptPubKey, dest)) {
        return false;
    }
    if (IsAddressUsed(dest)) {
        return true;
    }
    if (IsLegacy()) {
        LegacyScriptPubKeyMan* spk_man = GetLegacyScriptPubKeyMan();