Подозирам, че SqlParameter
"знае" от коя команда е част и че тази информация не се изчиства, когато командата се изхвърли, но е се изчиства, когато извикате command.Parameters.Clear()
.
Лично аз мисля, че бих избегнал повторното използване на обектите на първо място, но зависи от вас :)