No vas mal rumbeado, pero no es por un tema de parámetros que se incluye u omite la llamada a super().
Si tenés una clase A y una B(A), no es raro que necesites inicializar tu clase B con alguna cosa extra que A no hace, y por eso necesites definir __init__, pero a su vez necesites que A haga lo que debe hacer, y por eso además incluyas la llamada a super().
Si cada clase define su __init__, entonces al crear un objeto de clase B, el __init__ de A no es invocado. Solamente es invocado si B no define su __init__ propio.
Te agrego un par de ejemplos simples para que quede claro:
Código Python:
Ver original# clase base para el ejemplo
>>> class A(object):
... def __init__(self):
... print 'init A'
...
>>> class B(A):
... def __init__(self):
... print 'init B'
...
>>> B()
init B # B no llama al __init__ de A mediante super()
>>> class C(A):
... pass
...
>>> C()
init A # C no define __init__, corre el de A
>>> class D(A):
... def __init__(self):
... super(D, self).__init__()
... print 'init D'
...
>>> D()
init A
init D # D y A definen __init__, y D llama al de A
>>> class E(D):
... def __init__(self):
... super(E, self).__init__()
... print 'init E'
...
>>> E()
init A
init D
init E #gracias a las sucesivas llamadas a super() en cada clase, corren todos los __init__
>>> class F(E):
... def __init__(self):
... super(E, self).__init__()
... print 'init F'
...
>>> F()
init A
init D
init F # al llamar a super(E) en vez de super(F), salteamos el __init__ de E