This seems like a very MRI dependent value. It looks like MRI has two thread priority mechanisms guarded by a USE_NATIVE_THREAD_PRIORITY macro. It seems that if that is disabled, these values are enforced. They are also used by the thread scheduler I guess for deciding what to run when the GIL does a context switch.

Considering other implementations as Rubinius and JRuby, I think they would use the underlying thread priority mechanisms where these minimum and maximum values are likely very different and the semantics might even be slight different.