Nikolaj you may have misunderstood the purposed of the article. Java has the most advanced garbage collector. The purpose of the article is not to argue that the Go garbage collector is better. The purpose is to explain why Go can get away with a much less sophisticated garbage collector.
I haven't actually seen any Go fans mocking the Java garbage collector. Quite the contrary this article was written in reponse to so often seeing Java fans constantly talking down the Go garbage collector. People who argue that Go isn't worth using until it has a Java style GC.
The point here is to explain why Go doesn't need a Java style GC. Go is a very differently designed language, which opens up for other design choices and preferences when it comes to GC.
I know that a lot of people like to think compilers, GC etc is completely decoupled from the language. But that is simply not true. The design of every language creates unique constraints and opportunities which affects the choices available to compiler writers and GC creators.
E.g. you cannot add Rust style memory allocation to Java, no matter how clever a compiler writer you are. A language is not merely syntax. Languages have semantics. Those semantics affect what you can legally do without breaking backwards compatibility.