It turns out that in .NET Framework, the GAC has precedence over the appdomain paths (usually the exe path) when searching for libraries. Some applications (typically MonoGame packages) take advantage of this by shipping Mono libraries with the exe, which are ignored in .NET Framework and used in an included Linux Mono build. Those libraries break Wine Mono if they're loaded. This was a surprising behavior to me, but I verified it using an automated test in the Wine Mono test suite. To prevent this change from causing Mono's builtin libraries to interfere with application libraries with the same name, various Wine Mono specific libraries have been removed or renamed. Mono.Cecil has been left in place because it has a stable ABI, and the application's version is likely to be broken due to a Wine Mono bug.
As part of this work, I also added the ability to prevent loading from the Mono GAC, and ensured that the GlobalAssemblyCache property of the assembly, which indicates whether the library was loaded from the GAC, is set correctly.