I understand your difficulty in seeing anything wrong with the HAL file. It looks right to me too.
I think that the next step is to check that the input to the pwm is correct. It is possible to configure a minimum speed for the spindle outputs in the INI.
linuxcnc.org/docs/devel/html/config/ini-...#sec:spindle-section
Use halmeter to monitor the input to the PWM generator to see if that follows the spindle speed command as you expect.
Is it possible that the laser is not responding correctly to the PWM? Have you seen it work properly?
Another possibility is that the base thread is too slow to support 250Hz PWM. What is the INI value for [EMCMOT]BASE_PERIOD ?