There is no single answer to your question. It highly depends on the situation and the context.
Sometimes you need entirely new material, sometimes - not. Sometimes, you even need several copies of the object, each with the same material, but only one to be modified, etc.
Using new material will break batching. Sometimes, this is okay, and sometimes, it is not. Using parameters can also break batching in some cases.
If it is a unique object, you can choose any option. If you have, for example, 30-50 such objects and only need to change one of them, this will be a completely different task.
So, in general, I would suggest adding any option you want but making it a way to prevent other parts of your game depending on this concrete implementation. Let the game think of it as "object changed its state to highlighted". In this case, it would be completely not a problem to change the implementation completely in case of need.