IMO, a big upside of using a define / require pattern, even when the final library is fully concatenated, is that you have a clear picture of all of variables that are available in a particular module.
It's a little ambiguous when using something like Smash, since you're not actually importing a module onto a variable.
For example, check out this random file from D3 source: https://github.com/mbostock/d3/blob/master/src/interpolate/i...
As someone unfamiliar with the codebase, it's unclear to me where many of the variables are coming from (d3_interpolate, d3_rgb_names, d3_interpolateRgb, etc).
It'd imagine it makes managing dependencies a bit trickier.