Почему бы вместо абстрактного класса не делать обычный, но с пустыми методами?
Абстрактный класс нужен для того, чтобы не было возможности создавать его экземпляры, а только его классов-наследников.
Простой пример. Пусть у нас будет абстрактный класс Фигура с методом Нарисовать; и есть его классы-наследники Круг и Квадрат.
Так вот. Экземпляры классов Круг и Квадрат мы имеем право создавать, а вот экземпляр Фигуры создавать не имеем права, т.к. это не имеет физического смысла. И уж тем более мы никак не можем реализовать метод Нарисовать у Фигуры. Поэтому и сделан такой запрет на абстрактные классы.
Это необходимо, чтобы код был надёжным и защищённым от кривых рук других программистов
Если есть несколько братьев, то у них должен быть родитель.
Родитель (как интерфейс) объявляет кучу методов без реализации, у потомков реализация уже специализирована (поэтому в родителе описывать и нечего).

Я ведь могу просто не определять тело метода в базовом обычном классе, да и всё.
Действительно, так делают: одна часть методов определена у родителя, но не все.
А вот если ни один метод не определять, то встаёт вопрос - нужен ли такой экземпляр без методов? Вот абстракция и решение: нельзя сделать экземпляр.