So I have dug a little bit of code about this phenomenon.
What I have figured out is that the -vm option is implicitly filtered off. This means that if I provide -vm option (does not matter in .product file or using p2.inf) it will not be set! The logic is in org.eclipse.equinox.internal.frameworkadmin.equinox.EclipseL auncherParser.setVM method.
Can anybody explain me why this argument is suppressed?