Boolean modifier messes up material assignment
This is because assigning different materials to a mesh is dependent on the Topology of the mesh. 

Adding a Boolean operation changes the topology, so the faces that no longer exist can't have a material, and new faces will most likely be in different positions or shapes.

Blender assigns the first material to new faces created by a Boolean modifier:

  

A few possible workarounds:


Applying the Boolean modifier and assigning the materials your self, as well as changing the topology to fit where the materials should go.
Using a texture to combine materials with a Mix shader, independent of the object topology.