Ah yes, I remember that episode of JSJ. UMD makes perfect sense for something like Lodash, where ease of use and portability is really important, and (I don't think) external dependencies are involved*.
For most modules I've worked on, having npm manage dependencies, and being able to easily consume these is a huge advantage. As far as I can tell this approach doesn't work with UMD (again, please correct me if I'm wrong).
So I just don't see it as an approach I would want to use unless:
- Supporting all environments is critical
- The module doesn't have any external dependencies
I definitely lean in the direction – probably ignorantly – of just use CJS.
* I've only skimmed the Lodash source, I should take a closer look when I get the chance.

Is it really that straightforward, though? Making your CJS module compatible with AMD, or vice-versa, surely complicates your implementation. I have certainly experienced issues consuming cross compatible modules that just don't seem to be tested properly with my target module system.
I also assume (please tell me if I'm wrong) that by making my modules AMD compatible, I'm locked out from all of the dependency management goodness that comes with CJS and npm.
n.b. As somebody that has always steered clear of AMD, this is totally uniformed. The ambidextrous UMD approach sounds perfect, but really seems to complicate things. But I would love for someone to school me on my misconceptions (: