When we upgrade some dependency, lets say hazelcast 3.x->5.x, we have made code changed in core, we support hazelcast 5.x now but hazelcast 3.x may be used by others.
its one such issue, if we have modulewise jar, we can just plugin the datastore we want without any issues, core code should be independent of coupling