I feel like a lot of aspiring tech influencers present stuff like this as special knowledge, fully gaslit with a clickbait title. Like "You'll never guess what this one little switch in your car can do" and then they're just talking about the turn signal, but a bunch devs who are just learning to drive will be blown away. IIFEs are nothing special. They provide cheap encapsulation. That is, whereas encapsulation is usually a byproduct or component of more purposeful coding structures, IIFEs provide isolation for the sake of itself, without needing to be just some feature of more significant machinery. In the late 20-aughts, the rampant use of IIFEs led to troubleshooting nightmares, as devs were using them for the silliest reasons and all of these little, mostly unnecessary "scope traps" were everywhere.
Now, 19 times out of 20, I'd reject a PR that includes one. They're a workaround, at best, not an intentional feature, and just because it's something the language can do doesn't mean it's something that should be done. There's almost always a better solution. There's likely never a good use case in an environment that supports modules, but they're sometimes useful in browser executed code when modules are not used and you don't want to dirty the global scope with the highest-level execution scope of your app (because the global scope is wide open to other code, including 3rd-party sources).