КОГДА именно надо использовать Closure?
По возможности следует избегать. Чтобы понять, что делает функция, берущая данные из замыкания, нужно прочитать не только ее, а еще и весь предшествующий код. Тяжелее в отладке, разбираться с большой кучей данных, разбираться что используется, что нет.Тяжелее переиспользовать, точнее возможность переиспользования кода стремится к нулю.Тяжелее в тестировании, вместо изменения входных параметров придется изменять большой кусок состояния приложения.
Лучше написать больше, но понятнее, чем сочинять сложные взаимовлияющие конструкции, в которых сам потом будешь разбираться дольше, чем писал.
Когда удобно.
Я использую только тогда, когда без них пришлось бы писать сильно больше кода.