Смотрите, операция A % B в Python возвращает такой X, что A – X должно делиться на B без остатка.
В первом случае (–2 % 3 = 1) –2–1 = –3 и это число кратно делится на 3 без остатка. B в этом случае выбирается из трех значений [0, 1, 2].
Также, в Python знак X совпадает со знаком B, то есть –2 % –3 = –2. –2 – (–2) = 0 и это число также кратно 3. Тут B выбирается из значений [0, -1, -2].
Других вариантов у вас нет.