Using Persian, ZWNJ really matters. For example while `A+ZWNJ+B` should be displayed as `AB` it's shown as `A B` in Persian but `AB` in English. ZWNJ might not have any application in English but it's vital for some other languages. It's a kind of an end-immediate-start in continuous scripts. In Latin alphabet it might have some uses in German language (fl). However it very important for Persian, Hebrew,, Arabic, Urdu, Hindi and some other alphabets.
Thanks
p.s. Just as a hypothesis, BiDi most interfere here as well and causes such behavior.