Java can package up your application including only the Java Platform
modules that your application actually uses.
Since Java 9, it is possible to create custom runtime images using the jlink tool.
Basically, a custom runtime image is a package that not only contains your 3rd party libraries but also required parts of the JVM. This is some kind of self-contained executable image that contains everything you need to run it, without the need to have a JRE installed on your OS. It's a nice feature because you don't have to worry if someone has a particular JRE version installed in order to run the image.
Now, I guess that the sentence you are referring to doesn't want to say that the size of the JAR is reduced when compared to a pre-Java-9 (non-modular) JAR. I think that the author wanted to say that the ability to package only the required modules of the JVM reduces its size in comparison with a JAR that would contain the whole JVM.
For example, imagine you are writing an application which makes use of only some basic Java API's like collections, IO or date & time API (contained in the java.base module). Since you aren't using API's like Swing (java.desktop module) or JDBC (java.sql module), you don't need to have them in your package. Therefore, you can explicitly specify which java modules your application is using (in the module-info.java file) and only those will be bundled with your app. In this case, you would only add the java.base module in the list of required modules. On the other hand, if the need arises to add database access to your application using JDBC, you will add the java.sql module to the list of modules. As you can see, there is no need to have a whole JVM bundled with your application since you can choose which modules of the JVM are needed.