The reason this came about is that the ICMP protocol unreachables
make a nice way for tunnelling boxes to determine wether the remote system
supports tunnelling or not. With BSD boxen, you never get back an ICMP
unreachable, which isn't too cool IMO. With Cisco routers, you get what
the spec says you must return if you return anything, that is, eight octets.
This is still pretty worthless since you don't have a whole IP header.
But if you return the entire IP header in the ICMP error reply, life's
good for the tunnel sender, it can figure out that the remote system can't
support IP tunneling, and can act accordingly. This is also IMO reasonable
since the common case would give you two IP headers (2 x 20 octets) plus one
ICMP header (1 x 8 octets) for a total of 48 octets, which fits nicely in
the IP minimum MTU.
-Craig