What is really not nice is the obession with pruning the versions for each package. For a specific package, there is no serious issue with keeping several old versions hanging around in the package tree. By default the package manager understands that and the user doesn't see them. But where there is some compatibility or build issue, the user would have the option of masking the latest and keep going on an earlier version: it would still build, usually with no extra effort. It would rebuild fast if you have a build cache. You could downgrade easily if you discover an issue weeks later.
But no: most maintainers where that matters delete the previous version as soon as the new one is half in. Not a helpful obsession.
Old versions (ebuilds and patches) are really not easy to find once they are gone from the portage ebuild tree. I still don't know where they live.
If a dropped package is of interest and there's a reason it shouldn't be in the tree I usually submit it to GURU. If I use it and it probably should be saved or re-added to the tree I proxy maintain it.
When I somehow get to an old ebuild like perhaps gentoo/www-client/chromium /chromium-118.0.5993.54.ebuild here:
https://github.com/gentoo/gentoo/blob/3fb0eea1ee35033113d7af...
how do I find which gentoo portage 'files' were live at the time? (poor example - there may have been no change in this case.)