We would like to be able to extract only src/sys or ports/french out of the repository for efficiency and disk space reasons.
Trivial. You can directly check out any part of the tree that you want by simply specifying the path name. It works the same as CVS.
This is an often mentioned feature which is not implemented yet. You can workaround this limitation for the working directory in Hg but not for the repository itself (.hg/*). The other way to do that is to have a collection of repositories linked together through the "hgforest" or the "overlay" extensions.
Git has recently gotten preliminary support for submodules which are linked repositories within a super-repository. This functionality may be too heavy weight for partial clones though, in which case a simple daemon could be implemented that checks out only a single tree object from a repository without history.