There is an easy workaround to circumvent this difficulty.
Please see this example:
Here we have three nested cubes made from three different materials (copper, aluminium and steel)
It's designed by using PartWB->BooleanFragments, which is referenced for meshing as usual.
But for material assignment, "BooleanFragments" is exploded using PartWB->ExplodeCompound:
to get these three solids:
Selecting correct solids is no magic, if visibility is set carefully before invoking dialog of material assignment.
References for meshing, material assignment and other constrains needs to be equal but not the same.
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.20415 (Git)
Build type: Release
Python version: 3.8.2
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.4.0
Locale: German/Germany (de_DE)