this.points = e.get('target').model.getReferencePoints();
А думали ли вы о том, что при редактировании маршрута массив, которым оперирует карта, может оставаться одним и тем же? - просто элементы добавляются, удаляются, изменяются. Если так (я вот опытным путём установил, что это так для редактирования и удаления точек), тогда в момент сравнения в this.points у вас будет находится текущая версия маршрута, а вовсе не предыдущая. И никаких изменений обнаружить не получится - вы будете сравнивать массив с ним самим. Делайте копию:
this.points = e.get('target').model.getReferencePoints().slice();
Что касается самой функции сравнения, как-то сложно у вас всё выглядит - четыре цикла, зачем? Можно же проще - искать в старом массиве точку, которой нет в новом, искать в новом массиве точку, которой нет в старом. Есть обе точки - значит было выполнено изменение, есть только старая - удаление, есть только новая - добавление. Я бы переписал вашу функцию как-то так, например:
function comparison(newPoints, oldPoints) {
const
oldPoint = oldPoints.find(n => !newPoints.includes(n)),
newPoint = newPoints.find(n => !oldPoints.includes(n));
if (oldPoint && newPoint) {
console.log('update', oldPoint, 'to', newPoint);
} else if (oldPoint) {
console.log('delete', oldPoint);
} else if (newPoint) {
console.log('create', newPoint);
}
}
UPD.
https://codepen.io/anon/pen/EzqVEN?editors=1010