Метод Dispose - виртуальный. Он перегружен по всей иерархии контролов. Если посмотреть реализацию перегрузок этих методов, то там можно увидеть сложную обработку разных типов контролов. Если проследить выше по цепочке, там будет вызов метода Remove.
Если возникло желание самостоятельно покопаться в коде, можете установить одну из утилит: Reflector, DotPeek, JustDecompile. Первая ныне платная, две другие бесплатны.