Потому что проще всего реализуется в широком диапазоне подходов аппаратного деления и лучше всего способствует многоэтапному делению в длинной арифметике.
Можете почитать
википедию (секцию про программирование), чтобы узнать, как это работает в разных языках программирования. Конкретно в JavaScript знак остатка всегда совпадает со знаком делимого. То есть если делимое - отрицательное число, то и остаток будет отрицательным.