There's definitely room for improvement.
Here are some of the thoughts behind the current design:
1) The reason I put repository install up top is that the goal was that non-developer users would download a tarball of acs-core, and that their primary path for installing packages would be from the repository.
The only people who'll want to install from file system are developers who develop straight off of the openacs CVS tree, or developers who have a local repository set up and install by checking out from openacs cvs, importing into local cvs, then updating. In other words, the only people who will be installing from local file system are people who full well know what they're doing.
2) I've seriously considered merging local install and repository install, so every time you want to install packages, we look both at the local file system and in the package repository for uninstalled packages.
Only tricky point about this is, what if you have an upgrade sitting in the file system, while there's an even later upgrade sittingn in the repository? What should we do then? That's a quite likely situation, actually.