How about this?
Each Pokemon comes with innate skills, but they can't be unlocked unless you meet an NPC who says, "did you know your Pokemon can do this?" "my Pokemon can do this, I think yours can too." and then you unlock the skill. I'll try to break it down...
Enter Vermilion City. There's an NPC outside with some birds and he says he can teach your Pokemon how to fly and carry you, but you need a Gym Badge to prove your worth. Beat Surge and come back, then he teaches your Pidgeotto or whatever how to fly and carry you. So now Pidgeotto has the flight skill, and can Fly if you choose it from the menu, but it doesn't necessarily need the actual move Fly. Of course, the move Fly still exists, just as a TM though. And, just so you don't have to keep flying back and forth to each of these "tutors" of sorts, once you learn the skill with one Pokemon, you can teach the skill to others straight from your PC, so any Pokemon Centre. It's assumed your Pokemon would be teaching others. So if you have a Fearow in your PC, go to the PC and you'll be able to teach it the flight skill as well, because your PIdgeotto knows it. Your Pidgeotto will probably teach your Fearow how to do it as well.
What do you guys think?