But since the spec can't realistically specify the content of [[Body]], this thing is just a stand-in for some as-yet-unspecified API. 

For example, the bit in LinkDeclarativeModules:
Let body be load.[[Body]].
ii. Let boundNames be the BoundNames of body.
iii. Let knownExports be the KnownExportEntries of body.
iv. Let unknownExports be the UnknownExportEntries of body.
v. Let imports be the ImportEntries of body.
...

I think this needs to be eg loaderHooks.getBoundNames(load) or some such (need not be loaderHooks I guess). Then the Loader never concerns itself with ASTs.

The Loader outbound API is pretty good and the internal API to loader hooks is good, but there remains some $Mystery functions and they are not baked in my opinion.