Все проще. Попробуй заменить при сравнении a > b хотя бы одну букву на нижний регистр и сортировка сломается. Для сравнения подстрок есть метод localCompare который сравнивает подстроки и возвращает продолжительное или отрицательное или нулевое значение. В противном случае необходимо делать дополнительную работу. a - b это тоже не вариант по причине приведения типов. Он правильный в плане возвращаемого значения но не реализации. Я и не говорил, что он верен. Я говорил о localCompare. И даже если пойти дальше и просто посмотреть как советуют сравнивать строки на stackoverflow (
https://stackoverflow.com/questions/2167602/optimum-way-to-compare-strings-in-javascript). Я ругался именно за счёт того что функция сравнения возвращала булево значение. Не надо так. Сравнение ждёт положительно или отрицательное значение или ноль. И это принципиальный момент т.к. попустительство в следовании спецификации и заигрывание с приведением типов это всегда место для багов