In Drupal 7, a module could implement hook_url_inbound_alter() and hook_url_outbound_alter() to rewrite URLs used in Drupal. The same effect could be obtained with path aliases. The only difference is that for path aliases that are someway dynamic, you would need a module that adds a path alias every time there is the need. That is what the Pathauto module does.
Is there any difference between the two approaches (implementing those hooks, and using path aliases)? Is there any reason to prefer one approach to the other one?
Is there any performance difference between the two approaches?
The only difference I can see is that with those hooks there could not be the need of accessing the database (depending on how the hooks are implemented). Is that the only difference, or are there more differences?