That would be a great feature and something I looked into in a while back. The issue is the Arduino bootloader. The bootloader is one of the key features of Arduino that makes is so easy to program. Normally you would need an AVR programmer to load code onto the AVR, but Arduino bootloader allows programming via serial
http://www.arduino.cc/en/Main/Bootloader My understanding is that to program via API mode, Arduino would need a modified bootloader that understands how to parse XBee packets and write the program code to flash. I didn't know enough about AVR/bootloaders to get anywhere, so I abandoned the effort. If anyone has ideas, please chime it. So, looks like switching to AT mode for wireless programming is a good option, at least for series 1 -- it's not possible with Series 2. BTW, here's the bootloader source code
http://code.google.com/p/arduino/source/browse/trunk/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c
Andrew