is there any case where using out keyword in the above example makes any difference?
Nope. You're allowed to specify out
in the declaration, you just won't ever be able to actually leverage it when dealing with a specific instance of that type.
Nothing about this program doesn't work properly, so you're essentially asking for a feature request of the compiler prohibiting this behavior as it is a likely indication of a mistake on the part of the developer. The response to that request is (just like virtually any other feature request) that Microsoft either didn't consider this as an option, or if they did, determined that it wasn't worth the time and effort to actively prohibit this behavior.