Локализация сайта
1. Как эффективнее хранить эти локализационные массивы: в файлах php и подключать (include_once) определенный файл в зависимости от языка или в json с применением memcache и выбирать нужный?

По моему БД MySQL удобнее всего в данном случае.

2. Как определить системный язык пользователя (причем независимо от операционки)?

Насколько я знаю — никак. Обычно на сайтах какойто язык стоит стандартно, а можно переключится на другие.

3. Возможно есть более эффективный подход?

Если писать с нуля, то эффективнее не знаю, если на Zend Framework, то там специальные классы уже разработаны.
В общем то Вы сами описали всё неплохо и можете обойтись без посторонних подсказок :) Буквально пара замечаний:

Сериализованные данные загружаются чуть-чуть быстрее кода на PHP. Если добавить к этому накладные расходы на memcache, весь профит может улетучиться. Тестируйте — это platform dependent.

Есть расширения PHP с быстрыми функциями сериализации/десериализации. Опять же выигрыш будет только для особых случаев, если данных реально _много_. Файлы переводов, скорее всего, не тот случай.