Alright, that explains everything.
Regarding the Material ID of a face and the object material, you may be mixing up some concepts.
The Material ID of a face is an internal flag (a hidden value independent of the object material) that tells the face which material to use in case the object has a multi-material assigned to it. If the object does not have a material, each face can still have a Mat ID assigned to them. If you assign a single material, the whole object will use that material regardless of the Mat ID each face has, but as soon as you assign a multi-material to that object, each face will render with the matching Material ID (If they exist).
If you have a default box (which has 6 Material IDs) and you assign a multi-material with only 2 materials, only those 2 materials will be shown, and the faces will cycle the Material IDs they use from the multi-material (not sure how clear this is, sorry)
Also to consider is that when creating a default geometry they usually do not have any material assigned to them, but most usually have their faces Mat IDs assigned (this is a decision of the developer to implement). In the case of the Box(), the developer decided to assign a different material to each side of the box, but it could have only one Mat ID.