Revit 17.0.501.0, 20160720_1515(x64), Service Pack 2
Итак, вроде заработало. Не всё, но дальше уже можно разбираться. Я решил упростить код максимально, чтобы он удалял только один конкретный параметр "TestParam". Вот код:
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
    UIApplication uiapp = commandData.Application;
    UIDocument uidoc = uiapp.ActiveUIDocument;
 
    doc = uidoc.Document;
 
    var bindingMap = doc.ParameterBindings;
 
    DefinitionBindingMapIterator it
      = bindingMap.ForwardIterator();
 
    while (it.MoveNext())
    {
        Definition def = it.Key;
 
        if (def.Name.Equals("TestParam"))
        {
            //Запускаем транзакцию
            try
            {
                using (var t = new Transaction(doc, "Удаляем параметр"))
                {
                    t.Start();
                    bool Result = bindingMap.Remove(def);
                    t.Commit();
                    TaskDialog.Show("Удаление параметра", Result ? "Удалён" : "Не удалён");
                    break;
                }
            }
            catch (Exception exp)
            { Log.Write(exp); }
 
        }
    }
 
    return Result.Succeeded;
}//Execute
Я запустил его и Revit Lookup больше мне этот параметр не показывает.
Правда, в процессе отладки у меня внезапно случился крах: FatalExecutionEngineError, который никак не обрабатывался. Но после обновления до 17.0.1099.0
20161117_1200(x64) 2017.1.1 стало обрабатываться нормально, и причина ошибке была найдена: падал итератор после удаления связывания. Я добавил break и всё стало нормально.
Спасибо всем большое за помощь!