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 
{
        assert(static_cast<bool>(m_database));
        return *m_database;
    }
    /** Get a name for this wallet for logging/debugging purposes.
     */
    const std::string& GetName() const { return m_name; }
    typedef std::map<unsigned int, CMasterKey> MasterKeyMap;
    MasterKeyMap mapMasterKeys;
    unsigned int nMasterKeyMaxID = 0;
    
    CWallet(interfaces::Chain* chain, const std::string& name, std::unique_ptr<WalletDatabase> database)
        : m_chain(chain),
          m_name(name),
          m_database(std::move(database))
    {
    }
    ~CWallet()
    {
        
        assert(NotifyUnload.empty());
    }
    bool IsCrypted() const;
    bool IsLocked() const override;
    bool Lock();
    
    bool HaveChain() const { return m_chain ? true : false; }