They contradict Unicode. Unicode is a standardized system—used by all contemporary fonts—that identifies each character uniquely. This way, software programs don’t have to worry that things like the fi ligature might be stashed in some special place in the font. Instead, Unicode designates a unique name and number for each character, known as a code point. If you have an fi ligature in your font, you identify it with its designated Unicode code point, which is 0xFB01.
In addition to alphabetic characters, Unicode assigns code points to hundreds of symbols. Many of the programming ligatures shown above are visually similar to existing Unicode symbols. So in a source file that uses Unicode characters, how would you know if you’re looking at a => ligature that’s shaped like ⇒ vs. Unicode character 0x21D2, which also looks like ⇒? The ligature introduces an ambiguity that wasn’t there before.