I'd suggest there's a difference in intent when using NEEDS vs. IMPORT. NEEDS implies that a script or module is inoperable without its contents. It provides a top-level view of a dependency chain that can also be analyzed externally by only loading script headers. It doesn't preclude the use of IMPORT for finer-grained control within a script too.
This is confusing, NEEDS is an alias for IMPORT (at least in Rebol 3) that occurs at an earlier step in the script evaluation cycle. It's not 'real' code that in itself is evaluated, but is as 'real' as the Type or Name headers (and potentially others) are in influencing the way a script and its dependencies are integrated into the general flow.
I don't want to argue the merits of the specific Rebol 3 module system—it's quite a labyrinthine construction that could do with being unwound. Conceptually, I see the NEEDS/IMPORT relationship as being reasonable.