TL;DR: importwallet ignores the reserve=1 field, thus the keypool of the imported wallet is lgnored. Whenever the user requests a new address in the UI it won't be part of their previous backups of the imported wallet.
The dumpwallet RPC call produces a human-readable wallet dump which contains all private keys
and for each key its birth date and a field change=1 or reserve=1 or label=what the user entered in the UI.
I assume reserve=1 means that a private key was part of the keypool, i.e. a pool of keys which are stored before the user even requests a new address in the UI to ensure backups are valid for quite some time in the future.
Now I would expect the importwallet RPC call to be precisely the inverse operation of the dumpwallet RPC call just by looking at their names, "dump" and "wallet" sounds like it includes everything. And the fact that the file is human readable and its content includes information about what is part of the keypool makes it look even more like the keypool is preserved.
However the current code of master, and also the actual behavior of v0.15.1 which I've tested, shows that in fact importwallet ignores the reserve=1 field:
https://github.com/bitcoin/bitcoin/blob/89005ddad1c4a9732ecae47c7de34b4de157f48f/src/wallet/rpcdump.cpp#L570-L581
This means that the imported keys are not considered as part of the keypool, and not returned to the user when they request a new address. As the dump contains the birth date of the keys they might assume that importing a dump which is much older than the wallet they are importing to would result in the UI returning the dump's keypool addresses first. But they will get addresses of the keypool of the wallet to which they imported the dump, of which they might not have a backup as they consider the dump as their backup. Thus all backups they have created from their walletdump are invalid.