ryujinx doesn't use the GC for their sub-systems, they use a mix of manual memory allocations throught their allocators or RC
For such project to succeed, you have to be able to optimize your memory allocation strategy
If you just rely on the GC, you'll have bad surprises (why does my game stutter during gameplay?!), they already have multiple due to their double dip on the JIT, nothing prevents the JIT compiler to compile during your gameplay, causing massive stutters, just like how shaders compilation is an issue at runtime
Personally I think C# is a great language to get stuff done. The big problem it has is the portability (especially when it comes to using it with a GUI).
Ryujinx uses Microsoft's JIT .NET technology [1] which is best available for C# codebases. Nothing new here since it needs to translate Switch's ARM instructions to x86 machine code somehow.
1) https://github.com/Ryujinx/Ryujinx
2) https://github.com/TASEmulators/BizHawk