I can’t speak for Aleks, but in my experience the great advantage of replace_url.php is that it’s very fast.
Changing a site URL through the backend is relatively slow because it results in Matrix having to recompute the URLs of each asset under the site from scratch, based on the asset’s webpath and its position in the tree. This can take a long time on a large site with many assets, and until it finishes some of your assets will have the new URLs and some will still have the old URLs. You could avoid that by doing it in two separate steps, first adding the new site URL and then removing the old site URL, but that would make an already slow operation take twice as long.
Is there a reason you absolutely need an individual 301 redirect for every single page? The replace_url.php script can’t do this because it’s performing a replace operation at the database level - the entire reason that it’s fast is because it’s changing the URLs all at once, not one by one.
If you’d rather avoid webserver-level configuration then you could look at Matrix’s Remap Rules feature:
That should allow you to redirect all URLs under a particular site to the equivalent URL under a different site, using a single remap rule.