This took me about ten reads to understand but I've got it now.  Thanks for taking the time to explain it.

To summarise my understanding:  some libraries return a symbol, in which case there is no point exporting anything, you just use the same symbol as the input to the `function` second argument of `define` (for sanity) and all is good.  But some libraries don't return anything, instead they set up a window-scoped object.  The `exports` config sets up that window-scoped object as the input to the `function` second arg of `define`.  Again for sanity we tend to use the same object throughout but if there were multiple libraries defining the same symbols, potential confusion/ordering problems are sovled this approach of passing arguments to a function, thus having local scope, but linked to explicit libraries or an explicit symbol from the scope of a library.

And so what I was doing *was* bad !