I use an Action Replay -- I've been playing Pokemon with a "cheating" device since R/B/Y.
There's a couple reasons I use it, and some restrictions I have for myself.
1) Events. I don't have time or the motivation to go to a Toys R' Us always, and I think it's really stupid for me to miss out on stuff just because I didn't get around to playing a certain game until years after.
2) Speed. As an older player (I'm 25 years old) I really just don't have a lot of time to play. I have a full-time job and lots of other commitments, and I like to have a social life too. I'm a perfectionist by nature, and I train every single Pokemon I catch. So I usually use a 2x or 4x EXP code. Because otherwise, it would take me years to beat one game the way I like to play.
3) Convenience. I've never had many friends who were into Pokemon, so I've never had many friends to trade with. Sometimes, if my brother has had a different version, we've been able to trade, but otherwise, if something is version specific, I will hack in an egg or something like that.
4) Cloning. I worked hard to have a full Pokedex on my Gen III games. I'd still like to be able to use Pokemon in the Battle Frontier there, but also be able to use them in my newer games.
Really, what it comes down to is that this is a video game! If you're using a cheating device for your own personal play, who cares? It's supposed to be fun. If someone's idea of fun is hacked Pokemon so they can breeze through the game, good for them. I personally don't like the game to be easy, so I only use hacks that will make gameplay faster than it normally would, or to add enhancement to my game (like events). I don't like to actually "cheat".
But when people trade hacked Pokemon for something someone put a lot of time in, or totally beat up someone with non-hacked Pokemon in battle, that's when things get unfair. I think the system is perfect as it is now -- there are checks to prevent people from getting taken advantage of, and players who want to change the way their personal game is still can do so.