Every dictionary is a collection, but not every collection is a dictionary.
Actually the reason Groups is not filed under the NamedObjDict collection is because it was something older (more like a table). A table is also a "collection", but it was implemented way back in the 80's ... just not removed & replaced by dictionaries since that would cause problems. If you look at the ActiveX object of the DWG file you can see most of these "tables" as collections of that object. Open the text screen (F2) and type the following at the command prompt:(vl-load-com)
(vlax-dump-object (vla-get-ActiveDocument (vlax-get-acad-object)))
You'll see all sorts of "Properties" of the document. Some of them are other objects, and some of those are collections of other objects. E.g. the Blocks property links to the Blocks collection (which is actually the Blocks table. The Dictionaries property likewise links to the NamedObjDict collection. The Groups property links to the Groups collection. Etc. etc. etc.
The issue with some things in one place and others in another place is due to the long history of changes in acad. AutoDesk periodically added not just new features, but also new structures inside the DWG file to hold those features. E.g. the old table structures could not be tied onto other objects. For that XData was allowed, but this had some serious restrictions like a maximum amount of data and only some data types allowed in some codes. E.g. the description of a Layer is attached to that layer's table entry as xdata.
Thus the dictionaries were implemented, which allows data to be stored not just for the DWG file as a whole, but also tied onto any other object. E.g. the AnnoScales are stored as a dictionary under the NamedObjDict collection. But the links for each annotative object to the scales attached to that object are stored as Dictionaries attached to that object itself. Also a dictionary / its XRecord items do not have such restrictions as XData does. Thus a dictionary (or even just one entry inside it) may contain anything between 0 bytes and the maximum your PC would handle before crashing. Unfortunately some programmers didn't think about their use of dictionaries enough, thus you end up with these dictionaries cluttering the DWG file and having difficulty purging them out when not needed anymore.