How do I dynamically define Asset Volumes' Base URLs for different Sites?
As happens, I had to "give up" and ask for help in order to figure out a solution myself.

My issue was I was trying to dynamically set @web and @webroot for the sake of Asset Volumes. That would presumably mess up other things that use those aliases.

A way to make it work is to create new aliases per-site for Asset Volumes. If someone else wants to do this, here is a way.

In config/general.php create aliases in the appropriate spot (e.g. in the * global, dev or whatever environment section you want) replacing &lt;site-handle&gt; with the handle of your site (set in the Settings > Sites panel):

'aliases' =&gt; [
  '@&lt;site-handle&gt;AssetsBaseUrl' =&gt; 'https://site-a.dev',
  '@&lt;site-handle&gt;AssetsBasePath' =&gt; '/Users/kirkroberts/Work/Codebases/site-a.com/online/public_html',
]


Now for the Asset Volumes for that particular site you can use @&lt;site-handle&gt;AssetsBaseUrl or @&lt;site-handle&gt;AssetsBaseUrl to start your Base URL and File System Path fields, respectively. (replacing &lt;site-handle&gt; with that Site's handle)

This should enable assets to be stored in whatever domain/folder you specify.

Of course, the aliases will need to be set manually for each environment in config/general.php, which is kind of a pain but not a huge deal.

Maybe that will help someone get it done or find an even better way to do it.