Airways simply allow for better management of traffic.
Imagine for a moment that everyone had an off-road capable car, if all the drivers were going "GPS Direct" to their destination how would drivers ensure separation? How would you avoid hitting other cars if there were no roads?
Airways are the aviation solution to this problem: Defined routes between navaids (VORs, NDBs, and the like). Airways can also be defined using "fixes" defined by GPS coordinates which can provide something closer to "GPS Direct" routing while still providing a defined route.
Airways also provide a bunch of other benefits, including:
Traffic Flow Management
Flightplans in Europe are validated by the CFMU (Central Flow Management Unit) and checked for criteria such as direction of airways (which can change during the day, e.g. one airway being for eastbound traffic only between 1000 UTC and 1400 UTC), correct flight level ranges and airways correctly connecting waypoints, such as fixes, VORs or NDBs. The bottleneck in all flight operations is understanding airport capacity (how many operations/hour) and sector capacity (how many aircraft handled per sector/per controller). The goal is sometimes to distribute traffic between two sectors, although having the same destination. Below you will find two routings to Düsseldorf - EDDL, one departing from Leipzig - EDDP and one from Berlin-Tegel - EDDT (click on links to see visual representation):
EDDP - EDDL
ORTAG Q230 WRB T854 DOMUX
EDDT - EDDL
BRANE Y200 HLZ T851 XAMOD
The routing from EDDP to EDDL is going via WRB - TINSA - ADEMI - INBAX - DOMUX, which is within the boundaries of a sector called "Paderborn High" or PADH.
The routing from EDDT to EDDL is going via PIROL - DENOT - HMM - XAMOD, which is within the boundaries of a sector called "Hamm High/Medium" or HMMH/HMMM.
During peak hours, both sectors are separate and deal with traffic only within their sector, which uses the full capacity of each controller handling the sector. Outside peak hours, the sectors can be combined and worked by one controller. This allows a granular usage of controller resources and airspace.
Separation between Traffic
From the example above we have seen that there is 2 routing endpoints at Düsseldorf - EDDL for traffic arriving from the North-East and South-East, XAMOD and DOMUX. Both waypoints or fixes are respective STAR or transition entry-points for arrivals into Düsseldorf. By using a standardized routing to and from airports, we can now expect traffic to always arrive via these two points from the east, unless other coordination has been achieved by the ATC units involved. Looking at the reverse routing for both airports, we will see these routes:
EDDL - EDDP
NUDGO Z858 BERDI Z21 BIRKA T233 LUKOP
EDDL - EDDT
MEVEL L179 OSN L980 DLE T207 BATEL
MEVEL and NUDGO are two of the SID exit waypoints out of Düsseldorf, MEVEL being 10nm north of XAMOD and NUDGO being 26nm east of DOMUX, however the relevant fix here is ELBAL, which is one of the fixes on the SID23L from Düsseldorf to NUDGO, which is 16nm south of NUDGO. With something simple as using standardized entry and exit fixes to and from an airport, we have managed to maintain a traffic flow with ensured separation between departing and arriving traffic, something which would not be possible with GPS direct routing or would require constant ATC vectors.
Handoffs from ATC Unit to ATC Unit
The above examples show different routings and sometimes different sectors handling traffic on these routes. How is traffic handed off to other controllers and where? A handoff consists of moving the radar track of the aircraft from one controller to another and thereafter instructing the aircraft to change the frequency to the next sector controller. Handoffs are initiated at sector boundaries, at specific fixes, which have been agreed on between different ACC (Area Control Centers) or sometimes even within one ACC between single sectors. Since we are already familiar with Düsseldorf airspace, let's use the below routing from München to Düsseldorf.
EDDM - EDDL
GIVMI Y101 TEKTU Z850 ADEMI T854 DOMUX
From the graphical represenation you will see that traffic from EDDM to EDDL will pass the waypoint ARPEG, which is close to the destination airport. Before reaching the waypoint ARPEG, aircraft will be under control of either the Hersfeld (HEF) or Gedern (GED) sector (page 5) and need to descend towards the destination airport. The next sector for arriving traffic into Düsseldorf via ARPEG would be Paderborn High Sector (PADH). The agreements between HEF/GED and PADH are that arriving traffic to Düsseldorf via ARPEG is to be expected at FL240 level at ARPEG and released after handoff for further descent through PADH, even if the aircraft has not yet crossed the sector boundary and is not in PADH airspace. These coordination waypoints and handoff procedures are documented in Letters of Agreement between or within an ACC.
Weather
When weather (wrong-way lows, strong jetstreams, storms, etc) affects the Direct route, flight dispatchers will pro-actively suggest routes around it. It's not unusual for NYC-SFO traffic to be routed over Canada or over Kentucky when the Midwest is storming.
Exceptions - Free Route Airspace
Where airport and air traffic density allows, the use of airways is not mandatory or in some cases, not even expected or provisioned for. One example is the Free Route Airspace overhead Scandinavia, where a portion of airspace can be freely used between defined entry and exit points. Similar systems are also being discussed by NATS UK and the FAA NextGen Air Transportation System.
For more information on airways and their use, see also the related question:
Is there a difference between how commercial jets and GA aircraft use airways?
Some material courtesy of VATSIM or VATSIM Germany. While only for simulation use, the material used is as accurate and close to the real sectorisation or procedures as possible, so should be sufficient to explain the concepts presented here.