Q:

Why are there 2 routes in this table instead of one?

route -n gives:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.20.254  0.0.0.0         UG    0      0        0 eth0
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

ifconfig gives:
eth0  Link encap:Ethernet  HWaddr 00:0c:29:f1:76:32
      inet addr:192.168.20.10  Bcast:192.168.20.255  Mask:255.255.255.0
      inet6 addr: fe80::20c:29ff:fef1:7632/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:6387084 errors:0 dropped:24 overruns:0 frame:0
      TX packets:374481 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:712509342 (712.5 MB)  TX bytes:37312703 (37.3 MB)
      Interrupt:18 Base address:0x2024

Why do I need 2 routes here instead of 1?  What is the point of this line?
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

My interface address is 192.168.20.X with a netmask of 255.255.255.0, so surely the stack can tell how to get to 192.168.20.Y, why do I have that second entry in the routing table?

A:

The second line is actually the exact information (as pertaining to routing) you stated in the device configuration.
It would not be sensible to have the kernel always look up infos from the device database for every routing decision if we can put that info into the routing table itself.
Imagine the same situation on a router with several attached networks. The technique seen here applies there as well and simplifies routing decisions by a great deal (Only one line more in the routing table vs. 5 interfaces to scan).

