It’s a method of grouping functionality in one common place. In the FCC example in isolation, what you said is true, but you have to look at it as if you have many, many other pieces of functionality and you need a way to organise them in a sensible way. For small scripts and very small applications it doesn’t really matter, but for anything else, some way to organise things is important.
re why use an IIFE: because JS is function scoped, you can contain everything declared to just that function, all the variables etc will be kept there and won’t leak out.
Modules are now built into the language (a file is a module, and you can import/export things from each one), but there isn’t full support everywhere at the minute. You can get the same effect by wrapping a set of common code in an IIFE (so it’s all self contained under one namespace).
Note that this has nothing really to do with OO programming, it’s just a common way of organising code, but it makes sense to introduce the idea at this point in the curriculum