Simple parameterization of a char column that is the partitioning column for a table prevents partition elimination when a literal value is used in a predicate on that column, unless an explicit cast is used to reduce the maximum length of the parameterized literal to the defined length of the partitioning column or less. By default, the literal is typed as varchar(8000).
As far as I can tell, SQL Server 2005 did not apply simple parameterization to a partitioned table, so partition elimination succeeds in the same scenario. When forced parameterization is enabled on SQL Server 2005, partition elimination succeeds where it fails on 2008 onward.
Repro in the details section below. See also http://bit.ly/PartElim