Это, конечно, зависит от рассматриваемого приложения. Если вы знаете , что приложение будет работать только на одной платформе, то, очевидно, нет причин требовать, чтобы оно было независимым от платформы. С другой стороны, если вы создаете приложение, которое должно быть пригодным для использования, скажем, в течение следующих 15 лет, как вы можете знать, что выбранная вами платформа будет тогда существовать? Трудно предсказать будущее, и поэтому, делая вашу платформу приложений независимой, у вас меньше головной боли.
Независимость платформы не обязательно подразумевает накладные расходы. Скорее это подразумевает хорошие методы программирования; если вы сделаете свое приложение ортогональным к платформе, то смена платформы будет проще простого.
Иногда невозможно избежать зависимых от платформы вызовов функций, например, из-за необходимости напрямую взаимодействовать с некоторым аппаратным устройством на низком уровне. Уже тогда можно сделать приложение практически независимым от платформы. Вместо того, чтобы разбрасывать повсеместно зависящие от платформы вещи, сворачивайте их строго в один класс / пакет / что угодно. Затем вам нужно изменить только один этот модуль, чтобы перевести ваше приложение на другую платформу.