This is a how to, as far as I understand it, I'd welcome comments on what I have missed. I've based it on a particular module as that is easier but it is generic.

Suppose you have module like taxotouch but you don't like the name and think cloud is better. So rather than mysite.com/taxotouch you'd like mysite.com/cloud. How do we do this.

Problem 1 is that the page taxotouch builds includes links to taxotouch. Solution to this is to set aliases thus:
taxotouch = cloud
taxotouch/ = cloud/

The second one may not be needed for other modules and is just because taxotouch module has url('taxotouch/') so we need to match both forms. This works because url checks for aliases and uses them in the path. As long as the module calls url and you set the right match then it should be replaced.

So now mysite.com/cloud will show taxotouch page and on that page all the links will be cloud/1, cloud/2 etc. (taxonomy terms). The problem now is when you click a link there isn't an alias so unless you create a zillion aliases we need another solution. For this you need a custom module and you have to program in a drupal menu item. The easiest way on D6 is to use hook_menu_alter thus:

function mymodule_menu_alter(&$items) {
   $items['cloud'] = $items['taxotouch'];
   $items['cloud']['title'] = t('Cloud');
   $items['cloud/%terms'] = $items['taxotouch/%terms'];
   $items['cloud/%terms']['title'] = t('Cloud');
   $items['cloud/%terms']['page arguments'] = array(1);
   unset($items['taxotouch/%terms']); 
}

This also removes the need for the taxotouch = cloud alias. The above copies the menu items taxotouch put in for paths taxotouch and taxotouch/%terms. The title is changed too but that is a bit superfluous in the case of the /%term since the term name becomes the title, still its tidy. The taxotouch/%terms can be discarded as it is no longer needed so that is unset. The path taxotouch is still needed however otherwise drupal doesn't allow the taxotouch/ alias.

The ['page arguments'] line is also not needed in this case as the argument is in the same place, however if the path was instead view/cloud/%term then that would have array(2).

Note that you also need to clear the cache in order to register changes to the menu.

There are 2 other solutions that can be used. 1. Hack the taxotouch module to change the paths. Or 2. add taxotouch = cloud alias plus to settings.php add new functions custom_url_rewrite_outbound and custom_url_rewrite_inbound. Outbound, if it exists, run by url() so does the same as creating the right alias. The second rewrites the incoming to point to taxotouch.