I renmembered that there was basically the reverse problem: If exactly one gainable card was gained and one or more ungainables, the game incorrectly gave you the gainable card: http://forum.shuffleit.nl/index.php?topic=2588.0
The main problem with allowing to pick the ungainable cards is the same as the reason that for "choose a card" effects a text box needs to be present, just in case you want to name Necropolis, a card from the Black Market deck or something similar. If your opponent gained a Zombie from the trash last turn, how should this be presented? All of this is not a problem for Pilgrimage, for example.
It makes much more sense IMO in that case to give the user the option to not gain a card (even if he may be unsure why that is the case when the card text gives no optionality).
ADDED: One idea just occured to me: If the player was given a box of cards to gain from, like for Tournament Prizes/Duchy, it would avoid this problem. But then I'd bet that complaints would come forward when players wanted to gain Spoils, Bats etc. and were left empty handed. And even that Tournament interface uses a 'Don't gain anything' button if either Prizes or Duchies have run out.