possible error in optiboot.c ... ???

LOL, that kind of requires a double-take. Table 17 shows use of high-byte,low-byte to encode block size, so although first gush has you thinking byte, a 256 codes as a word = 0x0100, sent as 0x01,0x00, which is what is being sent by avrdude for 1284 and 2560 chips.

EDIT: BTW, as an aside, do you know if there's a way to use the Arduino IDE to compile the boot loader .C source files, or do I have to do a separate install of AVR Studio?