I'm not quite sure how you did this - is the inner white part masked (I'm just asking because the second material is called "tetrad_mask"), or are those faces that have the white material assigned? If the latter, I don't know how this happens - when I recreate your setup the white part does not disappear on the initial geometry:
Now when I only want to change the green material on the duplicate object, I can use the Selection input of the Set Material node. I take a Material Index node and plug it into a Compare node set to Equal to choose the index of the material I want to swap. The green material is in slot 0, so here I swap material 0 with a red material:
The white material on the initial geometry is slot 1, so to swap this with the red material, I compare the Material Index to 1 to select the slot:
//EDIT: Oh, I almost forgot, there is another quite comfortable way to replace a material: instead of using the Material Index, you could take a Material Selection node to select the material to be swapped. For example, below I chose the Material "green" to be replaced. The good thing is, this way you don't have to care for the index and don't need a Compare node. The bad thing is, if you decide to give the first material slot let's say a blue material, then it will not be swapped with red if you select by material instead of index.
//EDIT 2: For your specific problem: you have (I guess accidentally?) switched the material link to Object instead of Data. When you use the Join Geometry node it somehow loses the information which parts of the mesh should use which materials and just assigns the first material to the complete object. Change the material slot links to Data (the materials disappear from the slots because the data links do not exist yet) and give them the correct material again, then the nodes work correctly. If you somehow need this Object linking for anything I'm not sure how to work around this (but I think it even works if you only change one material to Data).