My bet is that MS-Windows has the same restriction as MS-DOS which is also limited to 8 bits. That's what my documentation on ERRORLEVEL says from DOS-3.3.
Unix is certainly limited to 8-bits of exit status from a program. (Well more if it drops core, it was signaled, etc... but you get the idea.)
Comment on Re: system() return values overflowing on win32?