And in regards to Pidgey/Pidove learning Fly, a better question would be, why does Yanmega NOT learn Fly? In its HG/SS dex entry, Yanmega is confirmed to be able to support an adult human in flight. The main characters of these games are at worst young teenagers. Who generally weigh less than adult humans. Thus making it even easier to be carried by a Yanmega. In the air.
A few other things to consider:
Torchic's ability to learn Mega Punch, DynamicPunch, and Seismic Toss.
Ferroseed's animation shows it spinning rapidly. Guess which move it can't learn? Yep- Rapid Spin.
Look at Zangoose. Look at them claws. It learns Scratch, Fury Swipes, Slash, Crush Claw, Shadow Claw, and Aerial Ace. Now try to teach it Cut. Yep. Zangoose can't learn Cut.
On the subject of Pokémon that can't learn Cut: Maractus. Do you see the sharp needles all over its body? How can that NOT cut anything?
Most Fire-types can't learn Flash. And yet they can generate fire, a source of light. This is particularly insane when you consider Charmander can't learn Flash, and it's seen use in the anime for things we'd use Flash for in-game!
Four words: Blitzle. Zebstrika. Flame Charge.
What, would you say, is the most basic requirement for learning Headbutt? That's right- a head. Farfetch'd has a head. Farfetch'd can learn Headbutt. Now let's look at Pidgey, a similarly-built Pokémon. Pidgey has a head. And yet, Pidgey can't learn Headbutt!
Pin Missile and Spike Cannon are, for all intents and purposes, the same move. So why is it that any Pokémon that learns one can't learn the other?
Ground moves can't affect Flying-types. OK, Tornadus avoiding Earthquake, that I can understand. But when you consider that this grants Gyarados an immunity to Bone Club...
In Orre, it is possible to massage Pokémon. Any Pokémon. Including Slugma and Magcargo.