Come to think of it, I found a rogue line in maniacbug's bootloader, which I deleted:
:020000000504F5 <----- delete this line
This is the boot code version number. I think it is not supposed to be at that location. See optiboot.c and the Makefile: the version is meant to be in a section named "version".
All targets in the optiboot makefile that do not specify -DBIGBOOT have an option like this in the LDSECTIONS variable:
which makes the version section start 2 bytes before the end of the 512 byte range in which the bootloader should fit.
For some reason the big bootloaders do not have this option.
I added such an option for the atmega1284:
atmega1284: LDSECTIONS = -Wl,--section-start=.text=0x1fc00 -Wl,--section-start=.version=0x1fffe
(version section starts at the end of the 1024 bytes in which the big bootloader should fit)
If I make the bootloader again, the version number ends up nicely at address 1FFFE and the hex file looks like this:
(I did not post the complete hex as all byte are different from the original hex file and I have no 1284 to test this)