Когда Android поднимает новый интерфейс, он ставит его маршрутом по умолчанию в основной таблице. Таким образом, если использовать только одну основную таблицу, придется следить за актуальностью маршрутов. Честно, первые опыты у меня были именно с такой схемой, оказалось сложно и не надежно.
Маршрут до сервера слетит, после переключения с wifi на 3g или обратно. Что потом делать? Искать новый маршрут, прописывать его в таблицу снова. Он может быть разным, могут быть разные интерфейсы и их типы например p-t-p или broadcast, тогда придется еще и уточнять IP маршрутизатора. Зачем если этого всего можно избежать.
OpenVPN на Android: прозрачное переключение между WiFi и «Мобильными данными» без разрыва соединений