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