just to explain why per face shader is simply the worst thing ou could ever do in maya.
It’s not really a bug it’s just how the shadingEngine is working, and if you lose some shader at some point with per face assignment it’s probably because some mesh shapes were introduced in between and therefore loosing the track of the groupID node.
Look at the first case, you have only one shader on a cube; ok it’s working fine and the graph is pretty clean just a connection to the shading engine.
Now look at the per shader assignment it needs to create a bunch of groupID nodes to do some subtraction etc to keep track of this change.
Also performance wise it’s really bad, if for whatever reason you need per face shading a good solution would be to use SOUP, and basically having a routine that will actually separate the mesh based on the assignment.
It’s much more efficient.