1. A Jar includes your app, but not your runtime or your applications native deps. Docker containers let you specify a whole lot more about your image that goes beyond the language specific application package.
2. You can use the same tooling and infrastructure for managing your executable binary artifacts across all the languages used in your org.
3. You can take advantage of cluster schedulers like K8s.