У тебя в условии
if (res1.length > res2.length)
но нет обратного. если вызвать наоборот
console.log(getGreatestCommonDivisor(2000, 1000));
то уже будет лучше, возвращает нужное значение, но всё равно не верно работает.
Предлагаю так, чтобы само определяло какой массив больше.
function getGreatestCommonDivisor (num1, num2) {
let res1 = dividers(num1);
let res2 = dividers(num2);
let a = res1;
if (res1.length > res2.length) {
a = res2;
}
for (var i = a.length; i >= 0; i--) {
if (res1.indexOf(a[i]) != -1) {
break;
}
}
return a[i];
}