Removing packages from the world list is one of the few operations people still edit the world file manually for. I believe this operation should be available via an emerge option (I can't think of anything better than '--unworld' at the moment).
The implications of this are pretty huge. Half of me says that it is a good idea to hide this option from the end user and power users know that they can edit the world file. Keeps breakage down.
[I found this bug in my list] I'll close it now because the portage team has a ton of bugs to wade through anyway. --deselect[=n] Remove atoms and/or sets from the world file. This action is implied by uninstall actions, including --depclean, --prune and --unmerge. Use --deselect=n in order to prevent uninstall actions from removing atoms from the world file.