Verilog - Name is optional when instantiating primitive gates
Because a module of any use has identifiers declared inside that you may need to access, either from within your code, or externally for debugging (like a waveform dump). There is nothing inside a primitive for you to observe. You need an instance name to create a qualified path name.