Probabilmente è perché nel caso del parametro, l'ottimizzatore non può sapere che il valore non è nullo, quindi deve creare un piano che restituisca risultati corretti anche quando lo è. Se hai SQL Server 2008 SP1 puoi provare ad aggiungere OPTION(RECOMPILE)
alla domanda.