This is an unfortunate consequence of maintaining backwards compatibility. You'll note that the the function is called in two places:

By the old param setting way:

RC_BIND_DSM = 0:idle, 1:DSM2, 2:DSMX

The new way:

msg CMD_LONG param2 = 0.0f: DSM2, 1.0f:DSMX

I suppose I could go back and change the mavlink definition comments, as well as the QGC code to use 1.0f and 2.0f for the param2 values. If it wasn't for the need to regenerate and commit the mavlink headers, I'd do that, but...

And that's the reason I pass in the range validity, so I can avoid having the warning log in two places.