`{(foo==a), v}` is overly pessimistic. the `x` indicate don't care bits and from my experience it shouldn't actually introduce any mux unless necessary. Consider the case where you write `result = maybe someDefault id someMaybe`. If clash would do what you propose it would force an introduction of a (potentially large) mux. But keeping the payload bits as undefined allows a synthesis tool to transform (pseudo code):
```
someDefault = ...
someMaybe = (foo == a) ? {1b0,v} : {0b0,{(lotsof)1bx}}
result = someMaybe[0] ? someMaybe[1..] : someDefault
```
to
```
someDefault = ...
someMaybe = (foo == a) ? {1b0,v} : {0b0,{(someDefault}}
result = someMaybe[1..]
```
Which would not be allowed if clash would translate it as you propose, you would get two large muxes instead of one. If there is no such optimization opportunity the synthesis tool should transform it as you have written.