Такое кодирование нелатинских символов является, так сказать, единственным надёжным способом гарантированно точного представления таких символов вне зависимости от используемой на веб-странице кодировки. Но жаль, конечно, что в json_encode() нет параметра, позволяющего отключить такое кодирование, если кодировка страницы и JSON-данных заведомо совпадает.
С массивами-то (Array) в IE (даже 6) вроде такой проблемы нет, а что касается объектов, используемых в качестве ассоциативных массивов, начиная с IE8 это уже исправлено: