Why isn't this implemented in Bitcoin Core wallet
It is, and many wallets do use a new keypair for every single transaction. New keys and their addresses are generated every time you get an address to receive Bitcoin. New keys and addresses are generate for every time a change output is needed.
In fact, the only wallets that don't are poorly written wallets that people should not use. Every major wallet software available uses new addresses for change and for receiving.
or enforced as a verification rule?
It can't without being a hard fork because keys have been reused in the past already. Furthermore it reduces the usability of addresses because you can't just post a donation address and receive at it multiple times. It also reduces the usability of paper wallets. This cannot be a consensus rule without disrupting a lot of things.