Let me give some history on this. In the original versions of DB2 (V1 and V2) for MVS (now called z/OS) there were only DB2 Plans (no packages). Each program had its own plan (which is the compiled DBRM). However, when using CICS (on-line transaction processing monitor), if you wanted to go from one screen (program) to another screen with CICS XCTL, then both DBRM's for each program had to be in the same plan. XCTL is the preferred and most efficient way of going from one CICS program to another. That meant that every screen (program) in your application had to have its DBRM bound in the same plan, which made for very large plans and was very cumbersome to manage. You had to do a CICS Start Trans to execute a new program with a different plan, which is not very efficient.
When IBM released DB2 3.1 for MVS (around 1990, if I recall) they came up with packages, where you could have multiple packages within a plan, so each CICS program could use a different package without having to rebind all the DBRM's in an application into a single plan all over again each time you added a CICS program.
There is not as much benefit to using packages with batch programs, where many people use one DBRM per plan (CICS issues don't apply). Some people now use packages always, even when not using CICS, but that is a matter of personal preference and company standards. There are certain security advantages to packages, since you can grant authority to only create a package in a particular plan.
Please note that my explanation may be a bit crude for those who are experts in DB2 for z/OS, since I don't use it as much as I once did.