Sospecho que SqlParameter
"sabe" de qué comando forma parte y que esa información no se borra cuando se desecha el comando, pero es se borra cuando llamas a command.Parameters.Clear()
.
Personalmente, creo que evitaría reutilizar los objetos en primer lugar, pero depende de ti :)