I believe that the modulate function is broken.
This is my test image:

This is the image desaturated in Photoshop:

However, this is the result of convert -colorspace HSL -modulate 100,0,100 in ImageMagick:

Next, adding a hue/saturation layer in Photoshop and setting the lightness to -50 (i.e. 50%) results in:

However, convert -colorspace HSL -modulate 50,100,100 in ImageMagick gives:

As you can see, the desaturate appears to be mapping the lightest color to white, and working its way from there.
Changing the lightness, however has also changed the hue.