Почему не работает решение задачи?
Интересный алгоритм, но реализация хромает.
const arr = [1, 2, 23, 23, 23, 0, 4, 2, 11, 4, 3, 3, 3, 3, 23, 23]
Вот кейс, который ломает работу алгоритма. Если максимальное число в массиве имеет больше всего повторений, а ранее в массиве встречалось число с на 1 меньшим количеством повторений, то усё.
Причина в этом:
while(i < arrSort.length-1)
Почему ты решила, что выходить из цикла на предпоследнем элементе хорошая идея, мне решительно непонятно.

Помимо этого есть ещё ряд проблем, которые влияют лишь на качество кода:

let arrSort = arr.sort((a,b)=> a < b ? -1 : 1)
Во-первых, сорт работает на месте. Во-вторых, что это за извращение в калбеке? 
arr.sort((a, b) => a - b)

let numberNext = 1;
let i = 0;
С чего вдруг первое равно единице, а второе нулю? При первой же паре значений numberNext окажется меньше i, он банально не на каждой итерации увеличивает своё значение, в отличии от i.

while(i < arrSort.length)
По какой причине тут используется вайл, когда тут всё для фора заточено?
;
    let numberNext = 0;
    let number = arr[0];

    for(let i = 1; i < arr.length; i++) {
      if(arr[i] === arr[numberNext]) {
        number = arr[numberNext];
        continue;
      }
      numberNext++;
    }

numberNext+=1
i++
Ты уже определись какой вариант ты будешь использовать.

И последнее, аллергия на ;?)
Вы можете написать какой кейс не проходит или там не показывает на каких данных проверяется?

Плюс к этому непонятно какой ответ выводить, если у нескольких чисел будет одинаковое количество повторений. У Вас есть вот такие недостатки, например:

в случае [11] - у вас выдаётся undefined
в случае [4, 11, 23] - у вас выдаётся undefined
в случае [4, 4, 11, 11, 23, 23] - будет равно 11
в случае [11, 11, 4, 4] - будет равно 4


Скорее всего, для начала, Вам нужно сделать проверка на пустой массив и на массив с одним значением.