The expression (a ? b : c) has to resolve to a type. The type will be either the type of b or c. If these are different (and there isn't an implicit conversion from one to the other) the compiler doesn't know which type this is at compile time.
You may say it should deduce that there is common root type, but there is always a common root type (e.g. Object).
In general the C# compiler will not attempt to guess what you mean. If you want to use the common root type then cast b and c to that type.
This kind of logic runs throughout the design of C#, it is occasionally a bit annoying, but far more often it stops you making mistakes.