This M:1 model adds a lot of complexity to the implementation. Furthermore, experience has shown that it doesn't bring any benefit. One of its main drawbacks compared to the 1:1 model is that a libgraal GC in one compiler thread will pause compilation for all other compiler threads sharing the same isolate. In addition, there's never a clear point at which it's optimal to schedule a libgraal GC. In the 1:1 model, the heap is mostly filled with garbage at the end of a compilation so scheduling a GC at that point significantly minimizes GC time. in the M:1 model, there's no such obvious point at which the heap is mostly garbage.
With this experience in mind, it makes sense to simplify the isolate management code in JVMCI by limiting support for the M:1 model that implemented by JVMCIThreadsPerNativeLibraryRuntime=0 (i.e., all compiler threads share a single isolate).