As one of the members in this forum once said, one thing I'd wish for is to sub-categorize certain moves to work as HM moves. For example, a Grovile could use Leaf Blade instead of Cut to cut down trees, Psychic Pokemon using Psychic to move boulders instead of Strength, or even something like Gravity to crush boulders.
I think that's a neat idea in itself, and it would certainly make more sense too. There is a problem though with this and the general idea, maybe better pointed out with the following quote:
Instead of having additional move slots specifically for HMs, I think the best thing to do would be to make HM moves erasable. That way, we would have been able to switch our Pokémon's TMs and HMs around whenever we wanted instead of constantly going to the move deleter. That'd save us a lot of time and energy, wouldn't it? Haha.
The problem is, well, the reason tying into why they have HM moves not be erasable in the first place without going to some guy in a town to do it for you. If you're in a cave in a section in which you have surfed, and then remove the move Surf, you'll be stuck, unable to get out until you say have your Pokemon knock themselves out and get transported to the last Pokemon centre you visited. In some obscure cases you can get yourself stranded (no Pokemon with Fly, no fishing rod/no Poke balls and the last Pokemon Centre you visited was, say, Pacifidlog Town), which is why the game prevents this (along with say releasing some Pokemon which are the only ones which know a specific HM move - give it a try!).
So the problem is - if they allow other moves to do the same job, the game would have to be able to track those too, if they don't decide for them to be similarly irremovable like HMs currently are (which'd be a probably ugly solution in itself). Not impossible, but probably a bugger to code and keep track of as it is. Sure, the chance of getting stuck in the game is a small one, but one they'd want to avoid regardless.
I think a neat way would be an option to have the Pokemon perform the HM move outside of battles, and be unable to use it in battles unless the player opts for it to replace a move. That way, the Pokemon will always know how to move that magically reappearing water or navigate three squares of water tiles or cut down that skinny tree (instead of setting fire to it, the 'logical' solution), without needing to give up a move slot. Anyone able to point out a problem with that idea, on that note? I might need to give it some more thought...