The underlying problem seems to be the fact that the original Lufia & the Fortress of Doom Restored IPS modifies the first 0x200 bytes, i.e. where the header is. This normally shouldn't happen, unless the original and modified ROMs had different headers when creating the patch. Consequently, ipsbehead ends up clobbering the first 0x200 bytes of the actual game data, leading to the crash.
This can be easily resolved by removing said chunk (it's just zeroes anyway) from either the original or beheaded patch. Just open up the patch and remove the 8 bytes at 0x5, which should be as follows: 00 00 00 00 00 02 00 00.
Moreover, ipsbehead should probably just ignore chunks with any offsets in the 0x0-0x1FF range, since those won't exist in a headerless ROM anyway.
This can be accomplished by changing line 100 from:
if (out->off + out->len < 0x200 || out->len > in->len)
to:
if (out->off + out->len <= 0x200 || out->len > in->len)
However, that whole block of code seems off and could use more scrutiny. Nevertheless, this fixes the edge-case in question.
Hope this helps.