Линия
IA a = new myClass();
определяет объект a как тип IA, и это все, что знает компилятор. Он не может предполагать, что a также является IB, поскольку вполне возможно, что это так:
public class MyClass2 implements IA{}
IA a = new MyClass2();
method(a);
, в этом случае a НЕ является IB, как в вашем примере. Таким образом, компилятор не делает никаких предположений о типе, кроме того, который вы предоставляете. Поэтому он должен вызывать метод, который принимает IA.