Akorát jste se úplně minul s podstatou problému. Problém není v tom, co může nebo nemůže být v hesle. Problém je v tom, že uživatel má v hesle znak, který není schopen zadat v rozhraní, které je pro zadávání hesla dostupné. Dříve se to dalo obejít tím, že se přepnul na softwarovou klávesnici a nějaký znak zadal přes ni. Nicméně nemyslím si, že by přes dříve dostupné klávesnice dokázal zadat libovolný znak.
Mimochodem, zařídit, aby jako heslo mohl být libovolný řetězec Unicode code-pointů v UTF-8, není žádný problém. To má jednoznačnou reprezentaci v bajtech, z bajtů spočítáte hash a je to vyřízeno. Problém je v tom, jak uživatel ten řetězec Unicode code-pointů zadá. Mimo jiné i proto, že jeden znak může být reprezentován různými code-pointy. Pokud uživatel zadává text vždy stejným způsobem vstupu, asi bude výsledná posloupnost bajtů stejná. Ale stačí, že použije jinou verzi softwarové klávesnice, a může být posloupnost bajtů jiná, i když bude zadávat stejný text.
Mělo by být na uživateli, jaké znaky si zvolí do hesla. Samozřejmě, nějaký typ znaku tam být musí, ale nikdo by neměl definovat, jaké znaky v hesle být nesmí, toto by mělo být neomezené. A je na samotném uživateli, jak si tu bezpečnost posílí, jak tam ten či onen znak bude, nebo nebude schopný zadat, nebo to nechá na nezbytném vynuceném minimu.
Jinými slovy: Apple špatně.