An individual assignment of materials is only possible if they are no longer instances (==copies of a single object), but a freely processable mesh.

For this you have to use the node `Realize Instances`. But first you would have to capture the index of the instance with `Capture Attribute` to be able to work with it further:

[![enter image description here][1]][1]

However, there are also situations where the objects should remain as instances. For this the following solution would fit, where you simply build a kind of switch at instantiation, where you decide which points should instantiate which objects:

[![enter image description here][2]][2]

[<img src="https://blend-exchange.com/embedImage.png?bid=AXBbaADY" />](https://blend-exchange.com/b/AXBbaADY/)<br><sub>*(Blender 3.1+)*</sub>


  [1]: https://i.sstatic.net/PoATZ.jpg
  [2]: https://i.sstatic.net/N16Eu.jpg