OK, I installed Debian in a chroot and could reproduce your issue with its ecl 16.1.2.
The issue is that on ECL, by design, dependencies that are in your defsystem-depends-on are NOT included in your depends-on by default, and therefore are not included in the program linked by program-op. Users of image-based Lisps do not have this issue, because everything is loaded in their image anyway as part of he defsystem-depends-on. But for correct operation on ECL and MKCL, you need to explicitly include in your depends-on the dependencies that you need loaded at runtime.
So this looks like ASDF behaves correctly as designed, whereas iolib should explicitly include whichever subset of its defsystem-depends-on it needs at runtime in its depends-on.
OK, I installed Debian in a chroot and could reproduce your issue with its ecl 16.1.2.
The issue is that on ECL, by design, dependencies that are in your defsystem- depends- on are NOT included in your depends-on by default, and therefore are not included in the program linked by program-op. Users of image-based Lisps do not have this issue, because everything is loaded in their image anyway as part of he defsystem- depends- on. But for correct operation on ECL and MKCL, you need to explicitly include in your depends-on the dependencies that you need loaded at runtime.
So this looks like ASDF behaves correctly as designed, whereas iolib should explicitly include whichever subset of its defsystem- depends- on it needs at runtime in its depends-on.