The Default Route is an unnecessary evil in my opinion. It's helpful in that it means you write less code, but really I find it's far better to simply create each or at least most routes by hand.
Areas are a good way to separate different parts of your application, but using it just to avoid dealing with a blank default route isn't the correct reason. I use areas to isolate my admin area from my default area, but my reasoning for doing so is that they are two independent systems.
If you like you can make default routes for each controller as needed on a case by case basis. For example you could have a default products/{action}
route and a default home/{action}
route, but then individually define each route in the ContactController
or what have you.
routes.MapRoute(
"Products_Default",
"products/{action}",
new {controller = "Products", action = "Index"},
new[] {"Web.Components.Controllers"}
);
routes.MapRoute(
"Contact_Send",
"contact/send",
new {controller = "Contact", action = "SendMessage"},
new[] {"Web.Components.Controllers"}
);
routes.MapRoute(
"Contact_Home",
"contact",
new {controller = "Contact", action = "Index"},
new[] {"Web.Components.Controllers"}
);