Зачем использовать "MapRoute" для маршрутизации "по умолчанию", а "MapHttpRoute" для маршрутизации "DefaultApi"?
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Если вы используете Web API поверх ASP.NET, то в конечном итоге они оба будут работать с одной и той же базовой таблицей маршрутов ASP.NET - однако, как правильно было отмечено, с точки зрения пользователя вы вызываете два разных метода для регистрации маршрута.
Маршрутизация была разработана таким образом, чтобы при хостинге вне ASP.NET Web API не приходилось полагаться на System.Web.
Следует помнить, что Web API не располагается поверх MVC, Web Forms или, если на то пошло, ASP.NET вообще. Он может быть размещен в веб-контексте (ASP.NET), но может быть и самостоятельным (Console, WPF и т.д.) или даже размещен в памяти (без использования портов, что полезно для, например, легкого сквозного тестирования).
MapRoute
предназначен для "обычных" контроллеров ASP.NET MVC, тогда как MapHttpRoute
предназначен для контроллеров Web API.