That's a good point. Some "sensitive_pins" can't be changed with "M42" such as heater, stepper motors etc. which is defined in "pins.h"
#define SENSITIVE_PINS {0, 1, ORIG_X_STEP_PIN, [...]}
So if PWM is not available, it falls back to digitalWrite(). Actually, on an Arduino, this is not necessary, because the definition of analogWrite() is
case NOT_ON_TIMER:
default:
if (val < 128) {
digitalWrite(pin, LOW);
} else {
digitalWrite(pin, HIGH);
}
as pin output level after analogWrite() on non PWM pins - Suggestions for the Arduino Project - Arduino Forum suggests.
But because Repetier-Firmware works on multiple platforms, this double definition could make sense.