This is impressive survey.
Talking about Gauche, I take two layer approach. The low-level layer (sys-*) is close to the bare POSIX interface with minimal wrapper to make it make sense in Scheme world, then upper-level layer for each categories implements higher functionalities on top of it.
For example, the spawn category, gauche.process module provides path search, i/o redirection and pipelining, etc.
The readdir's fancy features (filtering, sorting, fullpaths) are provided by directory-list:
So, it may be a good question what level of abstraction srfi-170 should provide---throwing in many useful features and make it convenient to use, or make it resemble to bare POSIX calls and let others build on top of it. The peril of the first option is that there could be too many options to agree.
But even if we take bare approach, I realized something like spawn needs to have quite a few configuration options to be useful---fd remapping, signal mask handling, etc.---which, with POSIX systems, one can put them between fork and exec), so creeping featurism may be inevitable to some extent.