Java Linker: The tool can assemble and optimize a set of modules and their dependencies into a custom run-time image. Basically, it will generate custom JRE which contains only modules required by the application. It can reduce the size of the distribution to ship runtime with the application.
Java Packaging Tool: Packages a Java application into a platform-specific package that includes all of the necessary dependencies. It can generate exe/deb/pkg/other distribution containing all dependencies and the runtime.
I use jlink to generate custom Java 15 JRE for the client and its size is about ~30Mb for the vanilla client.
I think it will be a good idea to ship vanilla client with the modern runtime to increase performance without additional user actions.
ZGC indeed seems to be quite good and it just improves the newer java version is.
I, personally, didn't spot any differences between it and G1 on Java15. But maybe my machine is too powerful as I have 150 FPS with max graphics settings even inside of the village.