Let's say you have an instance of Component#1 that contains 'default-material' faces within it.
You apply Material#1 to that Instance#1 and it displays with Material#1.
If you select Instance#1 and use 'Entity Info', it shows its material as Material#1.
If you edit Instance#1 and select a face and use 'Entity Info', it shows its material as 'default-material'. It's just the display that is changed not the internal faces' material.
Then you have an instance of Component#2 that contains 'default-material' faces within it.
You apply Material#2 to that Instance#2 and it displays with Material#2.
If you select Instance#2 and use 'Entity Info', it shows its material as Material#2.
If you edit Instance#2 and select a face and use 'Entity Info', it shows its material as 'default-material'. It's just the display that is changed not the internal faces' material.
Now make a Component#3 which is made containing Instance#1 and Instance#2.
Its instance is Instance#3.
At this point Instance#3 has no material, as can be seen if you select it and use 'Entity Info', it shows its material as 'default-material'.
Instance#1 and Instance#2 inside Instance#3 will still display using their assigned materials.
You can check this too by editing Instance#3 ans using 'Entity Info' on the nested instances and the default material faces within them - which all remain as set out in the first couple of paragraphs above.
Now make a copy of Instance#3 - as Instance#4 - and another copy as Instance#5.
Give Instance#4 a new material - Material#666 - its appearance is not changed [as there is nothing within it using the default-material for that material to 'display' on]; although if you use 'Entity Info' on it it will say its material is Material#666.
Now explode Instance#4, the two previously nested instances are now separated again and display the exact same materials as before and their internal faces' default-material as before when queried with 'Entity Info'.
Now give Instance#5 Material#666 - it looks just like the last one...
Now edit Instance#5 and change the material of one of the nested instances to the 'default-material'.
They will now display with Material#666 because a container's material is used for any contents that use the default-material - be they faces or instances/groups...
Explode Instance#5, the two previously nested instances are now separated again, one will display the exact same material as before, BUT the one that has the default-material will now show it has Material#666 when you use 'Entity Info' - this is because when you Explode any container its material [if any] is passed on to any of its contents that have the default-material - be they faces or instances/groups...
This is perfectly logical.
If you don't want it to happen, then don't leave nested objects without materials and then explode them.