Чтобы отдавать клиенту контент какой-то. Если у вас нет веб-сервера - то вы не можете создать веб-приложение и отвечать на запросы клиента по HTTP-протоколу.
Пишут свои потому, что не всегда готовое подходит. По разным самым причинам. Проекты бывают специфичные, под них затачиваются собственные сервера.
Для возможности локальной работы и синхронизации клиентского приложения с сервером.
Или для создания некого единого интерфейс-модуля ("враппер"/прослойка) для взаимодействия с каким-либо оборудованием через API-интерфейс посредством сетевых протоколов.