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ê :)