Как победить Undefined index в UnitOfWork при сохранении внутри postRemove?
В документации к событию postRemove прямо указано что это событие вызывается внутри метода flush(). Таким образом вызывая $this->entityManager->flush() внутри postRemove вы, фактически порождаете потенциально бесконечный цикл, поэтому "Undefined index" на самом деле - наименьшая из ваших проблем :)

Более корректно будет организовать работу примерно следующим образом:

Вынести логику сохранения изменений в отдельный сервис
Обернуть процесс сохранения изменений в транзакцию
В lifecycle методах не пытаться писать данные сразу, а вместо этого собирать информацию для записи в некую коллекцию, в простейшем случае - массив
После основного flush'а проверять содержимое коллекции и если там что-то есть - формировать отдельный набор изменений в entities и делать новый flush.
Если всё прошло хорошо - в конце делать commit транзакции

Тут надо смотреть на структуру таблиц. Может забыл где прописать inversedBy (было у меня такое), может c индексами напутано. Проверь внимательно все моменты, где используются связи и коллекции.