It happens because paths defined through hook_menu()
implementations have the precedence over path aliases. The System module defines the admin menu item, which is a catch-them-all, since Drupal, for a non existing path like node/1/not-defined-from-any-module, will show node/1. This also happens for not existing path aliases that partially match a path defined from a module; if you try to access admin/not-existing-alias, Drupal will return the page at admin.
Notice that in the case of a non existing alias that partially matches an existing one (e.g. path-alias/sub-path-alias/not-existing-sub-path versus path-alias/sub-path-alias), Drupal will not show the page at the path for the existing alias (in my example, path-alias/sub-path-alias).
Also, the Pathauto module doesn't define path aliases for node/1/edit; for that, you need the Sub-pathauto (Sub-path URL Aliases) module.
The Drupal Path module matches only full URLs when creating SEO-friendly aliases. This module extends that behavior by also matching known sub-paths and replacing them with their respective alias.
For example, if user/1 is aliased to users/admin, this module rewrites the link to the user contact page user/1/contact to use the aliased URL users/admin/contact instead. This also includes Views URLs taking a node as argument (e.g. node/%/yourview), in short, every URL that is based on, or extends, an existing alias. In combination with the Pathauto module it is possible to get rid of all remaining exposed internal non-administrative URLs.