The honest answer to this is that the Pokedex entries are unreliable. Take Magcargo for example, whose Dex states that it can create tremendous amounts of heat, so it should be able to evaporate water, and hence actually have an immunity to the same. However, the mechanics of battle clearly show that not only is it weak to water,but actually takes 4x damage. If Gamefreak's description is to be considered, that shouldn't happen. Which only goes to show, the Dex is more of a guide, to be taken with a pinch of salt than to use as absolute truth.
The reason for this is simple: The Pokemon are hyped up, and their abilities (probably) exaggerated, to make the game more dramatic/intense, to give the trainers a greater sense of power. This is a common tactic, and such hype generation is seen in many different instances inside and outside of the video game industry.
With that out of the play, there is one theory that I'd like to point out, something to cut Gamefreak some flak.
Battle Stats are different compared to regular Pokemon behaviour.
For example, let us assume that Garchomp is indeed as powerful and cool and fast as the Dex declares. That's in 'real' life. On the other hand, capturing the same in a Pokeball and forcing it to face another Pokemon in specific combat with its own rules (one move per turn, fainted Pokemon can't battle, accuracy and type effectiveness of moves is taken in consideration, and so on), puts some sort of a limitation on Garchomp.
That is to say, maybe Garchomp can move at Mach 2 speeds, when flying over fields or plains or whatnot, but when you put it in battle against a Greninja, it'll end up being slower. This can also be backed up this counter question; What is the speed stat indicating, really?
If we stop thinking of it as how fast a Pokemon can move, and instead think if it in terms of how quickly can a Pokemon convert its innate energy into that move, then suddenly it makes a huge amount of sense. Therefore, Garchomp moves faster than Greninja, but Greninja can use a move faster because of whatever reasons that are out of the scope of this answer.
Then comes the act of flying. The act of flying is different compared to the act of transporting a trainer while flying, which is what the HM is all about. Considering Garchomp is based off a shark, and has Rough Skin as an ability, that might explain why it's not safe to Fly on a Garchomp. Also maybe because it's too fast for a trainer to fly without proper equipment. That might also be why it can't use a bunch of flying moves. It lacks the ability or knowledge to convert the act of travelling through air into a move that can successfully damage the opponent. Like, if you're flying at Mach 2, can you really locate a Pokemon that's on the ground with so much accuracy that you can swoop down at those speeds and attack that Pokemon alone and no other? In a stupid way, Aerial Ace with its infinite accuracy coincidentally adds a small push to my previous statement/question. Of course, that was a straw man example, so it doesn't have a concept that is magically answered by Aerial Ace.
Anyway, that's what I think. This is pure speculation, but if it makes sense by changing the way we think of Speed as a stat and satisfies your curiosity, I'll consider my time to have been productive. Cheers!