There's a difference between contributing self-contained code, and changing a protocol that has to live forever. The receiving organization is making a commitment to honor all protocol changes, for very long time for compatibility reasons. They're allowed to have opinions about that. I'm sorry it didn't work out for these people, but somebody has to own the protocol, and the API, and the risk surface.
The way it is implemented, custom emoji are sent as short codes only with the rendering happening on the receiving side. This creates a rather large vector for abuse and we're not gonna accept it in this form.
Separately from that, the Spec Core Team expects to land custom emoji / sticker packs in Matrix v1.9 which is due in November. Given how close this is, we think that it's worth blocking this contribution to align on a proper solution on the spec level. I'd encourage you to engage with the spec process on the various MSCs around this feature to help influence the decision making.
This is just how large software works. You got to work with a large group. You can't make sweeping changes on your own. It's slow, it's cumbersome, but hopefully group effort is greater than the sum of its parts.
I don't see anything here that's unreasonable on behalf of element