Is the issue that Bitcoin Core has derived an address from my master public key that Electrum hasn't generated yet?
Probably, it could be the difference in default "gap limit".Electrum only generates 20 addresses beyond the last used address while Bitcoin Core has 1000.
For example: for fresh wallets, if the receiving address is at 21th index due to multiple use of getnewaddress command
Electrum wont be able to see it until some of its first address received btc.
You can try to increase Electrum's gap limit to match Bitcoin Core's default by using a command,
Open the console and enter ("View->Show Console" to enable the tab):
Code:
wallet.change_gap_limit(1000)
Many thanks, this turned out to be the issue and I managed to fix it!