Because there is a difserence between a language and a file format.
There are similarities, too, so that's where the confusion starts. Both
parse the input file into a parse tree and then work from there.
The important difserence is that in VRML, what you really want to describe
is the scene database, ie. the parsed instance tree. So, you need a way of
consistently moving data from the file to the tree and vice versa.
The DEF/USE approach is a very clean way of mapping a DAG into a file
representation that can be easily converted back into a DAG.
For programming languages there are pre-processors, macro processors, and all
kinds of tools that help you convert a program vire that is visually pleasing
to you to a form that the compiler digests. Why not here?
#include is not part of the C language.
Makes sense?
--george