If I was developing a Bitcoin wallet, should I support both legacy and compatibility addresses? To receive funds, I was thinking of giving a user the option of displaying two QR codes: 


Legacy - p2phk e.g. 1AKDDsfTh8uY4X3ppy1m7jw1fVMBSMkzjP
Compatibility - p2sh(p2wpkh) e.g. 34nSkinWC9rDDJiUY438qQN1JHmGqBHGW7


Is it safe to only give them the option of receiving to a "compatibility" address?
Displaying two would be justified if you were asking about a BC1 p2wpkh vs a 3xxx p2sh(p2wpkh) because not everything supports BC1 but its pretty good to use when supported.

Displaying two isn't useful between p2pkh/p2sh as you've asked about because p2sh is supported everywhere and many wallets and services have used p2sh exclusively for a long time.

Supporting plain p2pkh is not something I'd recommend a new wallet bother doing. That development and testing effort would better be spent on newer functionality.