Второй метод обрабатывает параметры, передаваемые в процедуру, как строго типизированные объекты IfxParameter (которые, я предполагаю, наследуются от dbParameter). Первый метод хранит те же данные, что и пара строк, что намного хуже; он содержит меньше метаданных - например, тип данных значения не сохраняется.
Параметр DbDataParameter содержит следующую информацию:
DbType DbType { get; set; }
ParameterDirection Direction { get; set; }
bool IsNullable { get; }
string ParameterName { get; set; }
string SourceColumn { get; set; }
DataRowVersion SourceVersion { get; set; }
object Value { get; set; }
byte Precision { get; set; }
byte Scale { get; set; }
int Size { get; set; }
Первый метод, который предоставляет только имя и строковое представление значения, заставляет ADO.NET пытаться привести строку к правильному типу данных и либо использовать значения по умолчанию, либо просмотреть доступные метаданные, чтобы выяснить правильные значения для других параметров (я точно не помню, каково точное поведение).