Каким алгоритмом можно парсить json на php (критично низкое потребление памяти)?
Если решить задачу не меняя условий, тогда нужно читать файл по кускам, резать куски по '},{' и пытаться распарсить до тех пор пока не обнаружится первый наименьший валидный блок, остаток добавлять к следующей итерации. Функция json_decode не выбрасывает никаких исключений или сообщений об ошибках, так что в него можно смело передавать невалидные данные. Это самый простой и эффективный способ решить задачу, без сторонних решений.
Если немного изменить (в том случае, когда нет гарантии, что файл будет отформатирован, как в примере), то между объектами лога (или достаточно большими блоками) я бы вставлял разделитель, например так:},"--delimiter--",{ Затем считывал бы файл по кускам, разбивал по разделителю и парсил родным  json_decode. Разделитель нужно сделать более универсальным, но это уже другой вопрос. Это будет наиболее близким к стандартам решением.
Вообще такой вариант хранения логов объединяет в себе все недостатки используемых технологий, в т.ч. и самого php. Так что советую в дальнейшем избегать таких решений — мало кто из коллег его оценит и захочет поддерживать.
Вот есть готовая либа: https://github.com/janeklb/JSONCharInputReader
Парсит по мере поступления и шлет калбеки