We don't recommend them internally for various reasons. Primarily, the interop story between goog.provide, goog.module, and ES modules ended up adding more complexity to our codebase than we were willing to accept (and it's not feasible to migrate everybody).
Externally, they're fine, especially if you're always compiling, or are able to use *only* ES modules throughout the entire compilation unit so that you have a good debug-loading story. Personally, I use them together with Closure for my external projects and have had no difficulties from it (aside from import.meta not being implemented yet).