As far as I can understand from the EF source code, it depends on the entity's property whether or not a Unicode argument is generated. Here "property" refers to the property in the mapping model. Each property has an EDM type (Entity Data Model), which contains more meta data than a .Net type, one of which is the type of the mapped column in the database, including Unicode.
But a method call, ToUpper
in this case, breaks the direct link with the property. After all, a method call could have multiple arguments, so it's probably too complex (or: deemed not worth the effort) to infer a matching argument type wrt. Unicode. So EF seems to err on the side of caution and chooses Unicode.
However, apart from these somewhat speculative considerations, in your case it is irrelevant whether or not the parameter is Unicode. By filtering on a processed value, not the original value, the query optimizer can't pick an index anyway. The filter expression is not sargable.