Eu suspeito que
SqlParameter "sabe" de qual comando faz parte e que essa informação não é apagada quando o comando é descartado, mas é apagado quando você chama command.Parameters.Clear() . Pessoalmente, acho que evitaria reutilizar os objetos em primeiro lugar, mas depende de você :)