Well, one one hand, it forces you to clearly modularize your app, so everything that belongs to a certain domain (including assets and such) becomes a separate package. Of course, this could also be achieved by using ES6 modules and a folder structure designed for this domain separation.
The biggest advantage, however, is that you can re-use such packages across several apps, by putting them into a special folder referenced by METEOR_PACKAGE_DIRS. You need some functionality like content rating? Just include the package you’ve already developed for another app, without copying the code around or using private NPM packages, This is the main reason why I absolutely love the Meteor package concept.
One third reason is that only packages let you define clearly which code becomes part of a mobile app and which become code part of a web app. Without packages, you would have to use
isCordova() and conditional includes a lot. Packages automate this task. This is something Node packages are dearly missing.