One possible reason why the mnemonic phrase and private key are giving access to different wallet addresses is that you are using the privateKeyToAccount method to generate the account object from the private key, but you are not using it to generate the account object from the mnemonic phrase. Instead, you are generating the private key from the seed value produced by the to_seed method, and using that private key to generate the account object.