Cрабатывание element.remove(subelement) в цикле через раз
Если глянуть в ElementTree.__getitem_(self, index), то можно заметить что с каждой итерацией item в params передается index: первая итерация 0, вторая — 1и дт
    def __getitem__(self, index ):
        return self._children[index]

Но, вы удаляете элементы из param, следовательно:
при первой итерации у вас первый item, который удалится
при второй item (который был третим), который удаляется
выходим из цикла

Итого у Вас остаются в params два item
Нашел решение:
Загонять в список элементы на удаление. А потом, выйдя из основного цикла, их удалять.

Только все равно не понял, почему так. =(