Thanks for the fast replies to my last question. Here's another simple one:
Why does a flash read using avrdude format the output hex file (Intel) with 32 bytes per line instead of 16, as in all other Arduino IDE generated hex files?
(Samples are "blink" sketch. On right is the hex file from IDE, first 30 lines)
There's no required line length for Intel Hex format.
The IDE prepares .hex files using avr-objcopy, part of the gcc binutils package.
Avrdude is a separate program written by a different person. They made a different decision. (And neither is properly "part of the Arduino IDE.")
I suspect avrdude was aiming for the maximum power-of-two that fits in a "standard" 80-column line. objcopy may date to a time when programmers had such limited memory that 16 bytes was safer...
None of the popular protocols even use the hex format while actually doing the "upload"; it's read in, converted to binary, and transmitted as binary, and in chunks of 128 bytes at a time (for ATmega328.)
The .hex file has a big advantage for on-disk storage, though, in that it allows "holes" in the memory that is programmed - A .hex file containing both a 4k sketch and the bootloader (0.5k) uses about 10k bytes of .hex file, while a .bin format would be something like 70k.