Packages are primarily intended as access and configuration control mechanisms to permit developers,particularly in large in larger workgroups,to organize large models and evolve them without getting in each others way.
When i say that i am changing i/o mechanism of my project i would give a new version of my xyz.io package.
(in order to reduce dependencies with other packages i have already used facade do no probs)
Package also group elemets that must be compiled together. If a change to one element forces the recompilation of other elements, then they might also be placed in one package.
For further information see Reference Manual page 381