Это потому, что корневой класс для всех исключений Throwable
реализует интерфейс Serializable
.Все исключения по умолчанию являются сериализуемыми, и это решение для языка, потому что авторы хотели, чтобы исключения могли передаваться по проводам без какой-либо специальной конфигурации.
Если базовый класс не сериализуем, у вас возникнут трудностивремя передачи того, что именно пошло не так в случае сбоя удаленного метода, поскольку вы не сможете контролировать встроенные типы исключений.