Ummm... Myslím, že to je správné vlastně způsobem. \u00df je správnou unicode reprezentací ß . Když json_decode() vrátíte se, stane se ß znovu.
Kde vám to dělá problémy? Nedekóduje ji přijímací strana správně? Mělo by, pokud používáte standardní json_* funkce.
Všechny příklady v příručce zobrazit totéž – znaky mimo rozsah ASCII se změní na číselné sekvence.