When a library is preserved during a package upgrade, preserve-libs currently re-parents the preserved libraries to the new version of the package. The re-parenting is not really desirable since /var/db/pkg transactions are needed in order to undo it when the preserved libraries are finally eliminated. These /var/db/pkg transcactions introduce extra complexity, such the NEEDED.ELF.2 handling added in this commit for bug 637284:
For cases like bug 652382 where there are dependency cycles between preserved libraries, it will be possible to eliminate the preserved libraries with zero /var/db/pkg transactions.
Since bug 286714, parent-less preserved libs are already implemented for unmerge operations. So, if we simply eliminate the re-parenting step during upgrades, then the corresponding preserved libraries will be handled in essentially the same ways as those preserved during unmerge operations.