In the case where you have a multi-module project and each module has its own distributionManagement.site.url which is common with projects that like their sites to be version numbered (see example beolw) the release:stage plugin fails to get the project's site properly deployed. From a brief look it seems release:sxtage is only computing a new URL for the owning project and not all the child projects. What's more it looks like its changing the site deployment URL and not the project's corresponding project URL. This results in the site deployment for children going to their original pom.xml specific locations regardless of them being 'staged' (i.e. they're not staged, they've just gone live!). Nearly as bad is that all the relative links for connecting modules and parents and banners together are broken too, as they are based upoin the project.URL which hasnt been touched by the release:stage mojo. site:stage makes a better fist of this, basically you need to remap the entire URL domain (site distro and project url) to be under some other parent space for you to successfully stage sites (see site:stage)
This kind of mistake has come up in the past, simply put a project can define all its own settings for everything so anything that makes assumptions based on inheritence or 'defaults' is just gonna break the system.
Example of how sub-project's defining their own site deployemtn and project URL information: