Reproducible: Always There any many archive tools that support multiple formats. For example p7zip is one of them. I think there should be an eselect module for the default archive tool, since it would be impracticle to have USE flags for every zip-capable tool for every ebuild that needs it. Another possibility is that all app-arch tools that support zip/unzip functions, except for app-arch/zip and app-arch/unzip symlink /usr/bin/zip and /usr/bin/unzip to their corresponding command lines. Another possibility is that ebuilds start to make suggestions based on apropos for archive tools, until a more permanent solution is accepted. Some examples of applications that use app-arch/zip and app-arch/unzip directly are gcc with USE=gcj, and dev-lang/R. The general concensus amongst R users is that unzip is only used for unpacking the packages, but there is reason to doubt it. If this was the case only unzip would be required, or maybe the ebuild maintainer for R wasn't sure and requested both. Currently the ebuild says; RDEPEND="${CDEPEND} app-arch/unzip app-arch/zip java? ( >virtual/jre-1.5. )"
This would be best handled by creating virtual/unzip on which packages like R can depend. Note that 7z's command-line flags are incompatible with unzip's. As a result, for p7zip to satisfy the virtual/unzip dependency, one would need to install a wrapper script in /usr/bin/unzip that does the necessary command-line argument munging. This means either a new eselect package that manages what goes in /usr/bin/unzip; or alternatively, a new USE flag for p7zip that installs the wrapper into /usr/bin/unzip (and therefore would have to block app-arch/unzip).
I removed app-arch/unzip from RDEPEND on R-2.13.1. Concerning a virtual/zip or virtual/unzip, please file another bug. Thank you.