Provavelmente é porque no caso do parâmetro, o otimizador não pode saber que o valor não é nulo, então ele precisa criar um plano que retorne resultados corretos mesmo quando for. Se você tiver o SQL Server 2008 SP1, tente adicionar
OPTION(RECOMPILE)
à consulta.