Yeah, XBMC's main loop is horrific. I noticed a similar thing on my RPi. The program runs in a "game-loop", executing about 100 times/sec, even if there is no input, and nothing to update on the screen. On every loop iteration it performs non-blocking read attempts on all its inputs. (Hence, when I told XMBC that I wasn't using an infrared remote, its CPU usage dropped from 99% to 70%, since it was performing much fewer read attempts.)
There does not seem to be any plans to change this any time soon.