Каким образом у разных объектов оказывается общим один параметр?
Дело в том, что переменная `calls` объявлена в классе и ее наследуют все экземляры этого класса. И у них у всех, при создании, self.calls указывает на одно и тоже место в памяти, на оду и ту же переменную. Так как переменная в памяти это изменяемый объект, изменяя его в любом из экземпляров, вы видите измененный объект в любых других экземплярах, да и в самом классе тоже.
Если хотите, чтобы при создании экземпляра создавался новый объект в памяти, а не наследовался указатель, используйте __init__, который вызывается при создании экземпляра.class SubClass(object):
    def __init__(self):
        self.calls = set()
Кстати сказать, что с классом SomeClass у вас абсолютно таже история. Изменяемый объект (словарь param), указатель на который наследуют все экземпляры.
ЧЯДНТ? Используете атрибут класса, а не экземпляра класса.
Сделайте примерно так:class SubClass:
    def __init__(self):
        self.calls=set()
    def add(self,data):
        self.calls.add(data)
И аналогично в SomeClass.