Zmodem's code is uglier than Kermit's IMO. Gods help you if you have to read either, but Kermit is written better and EK is almost understandable once you fold all unneeded #define's.
I'm surprised no-one mentioned the venerable UUCP. It has more variants than X/Y/Zmodem combined: at least 12.