This question is a little old, but I will do my best to answer it (since a best answer hasn't been chosen yet)!
People can sometimes hack their games to get a level 1 Greninja, for example. If they raise it, it has to learn moves as it grows, just like every other Pokemon, right?
This might also be something Gamefreak did to make the players want to play their game more--The player would have to look for a heart scale in order for the Greninja to learn Spikes (if they didn't hack their game)!
Another good example of this is Persian. It can learn Play Rough at Lv.1, and Meowth can't learn it at all. So what one could do is evolve their Meowth into Persian at Lv.28, then go get a heart scale and you can teach your Pokemon that move!
In conclusion, there is no real logical reason. It was just made that way, I guess.
I hope I helped!