The difference in limits stems from the fact that there are 3 main ways to access inputs from windows, the newer Windows.Gaming.Input assembly (https://docs.microsoft.com/en-us/uwp/api/windows.gaming.input), the older XInput, and the even older DirectInput. DirectInput didn't have a hard limit like with XInput's 4. I haven't seen a hard limit for Windows.Gaming.Input either, but MonoGame defines the UWP as 16.
The other thing is there is an implementation for SDL (http://wiki.libsdl.org/) which can support up to 16 devices as well and has implementations across Windows, Mac OS X, Linux, iOS, and Android.
It's located in: MonoGame.Framework/Platform/Input/GamePad.SDL.cs
I found the limits MonoGame uses in: MonoGame.Framework/Platform/Input.