I see some good and some bad to the UPS format. The places where it fails have been pointed out at RHDN, no need to rehash, but for the way I personally use ips files, it can't be used.
For instance, FF3us: There are probably 50 different patches for this game, and 3 different official versions, and so far one major retranslation hack (in 2 versions). Being able to stack patches (as this game is riddled with bugs) is essential. I do understand that knowing which version, and whether headered or not, is a big hindrance to the patch making and patch applying community. And of course 24 bit addressing is not enough for modern systems. But really, a one-size-fits-all patch format is never going to be the answer. If we can get one format per system, that should be good enough.
But back to FF3us: trying to stack patches would never work with UPS, because you'd need CRC32's for each possible combination. I'm not going to do the work of figuring out exactly how many there are exactly, but let's say there are 50 patches, and you want to apply 7 of them: that's 99,884,400 combinations (each combination needing a published CRC32), yeah, and that's just one example, actual results would be much worse, but that's realistic numbers. Having an option to ignore the CRC32 would help, but then you lose one of the main selling points, that is, the can't-cause-conflicts nature of UPS. EDIT: In its defense, UPS would be great for a "finalized" patch when you want exactly one patch to work with one input file and intend no other modification to.
I was saying before, we need a better IPS, yes. Something tailored to the SNES would be fine. Header detection is easy for the SNES, and a patch format could easily be made to detect a header and create/apply a patch as if it was not there. A format that can handle multiple address widths is also quite easy (trying to keep with the non-complexity notion). And it really wouldn't be that hard to have a third function (create and apply being the first two) for the potential new patch program: Merge/detect conflict. This could load 2 patches, and tell you whether they are in conflict *before* you've applied it.
OK, I'm speaking in theoretical right now, but I think it could easily be done.