Because Pokemon has a grid based movement system, diagonal movement would be impractical. Since the GBA only has 4 directions on the arrow pad any diagonal movement would rely on pushing first one direction then the next. Since Pokemon is grid based (1 button push = 1 grid block movement) this simply results in moving over one, then up one (or whatever directions you pushed). Games like Legend of Zelda: Minish Cap can have diagonal movement because they don't have grid based movement. Minish Cap simply moves you in the direction you're pushing for as long as you push the button and then adds to or cancels movement depending on what other buttons you push at the same time (push both up & down makes you stop; push up & left makes you travel diagonally up & left until a button is released). Since Pokemon's collision system (for trees, grass, water, etc.) is based on the same grid as the movement system & since you'd have to remove the grid system for diagonal movement, this is WAAAY more work than would be practical. (I guess you could steal the movement system straight from Minish Cap but other than that your only option is to rewrite a pretty large chunk of the Pokemon game engine.)
Note: I don't actually know about the inner workings of Pokemon's game engine, so it may be harder or easier than I'm making it out to be.