Figured it out: as expected, the second file's module was overwriting the first as soon as it was loaded.
In each file, use this structure:
Foo.Bar.Baz = (function (module, $) { // redefine existing module
function Qux() { // add Qux "class" to it
// ...
}
var exports = { // revealing module pattern: define exports
Qux: Qux,
// etc.
};
$.extend(module, exports); // merge modules
return module;
}(Foo.Bar.Baz, jQuery)); // import existing module, and anything else
Use the same structure for the other files (which contain the same module but with different classes). It won't matter which is defined first.