А что должно происходить, если ваши блоки убраны за экран через translateX(-500%)
?
Естественно, они не пересекаются с вьюпортом браузера и никакого события не создаётся.
Вторая проблема - если вернуть блоки на экран убрав translateX, то toggle('show', entry.isIntersecting)
приведёт к тому, что когда блок полностью окажется на экране, он тут же будет убран с экрана анимацией, сгенерируется новое событие по исчезновению блока, блок снова переместится на экран, сгенерируется событие, блок будет убран с экрана и так до бесконечности.