I'm going to answer this 6 years later (nobody else did and the comments don't cover it fully) because I've just given the wrong advice on another question about DHCP relay elsewhere (wrong answer shortly to be deleted), and had to revisit this topic in detail! Part of my searching brought me to this question.
The reason RFC 2131 dictates sending the response to the GIADDR
rather than the source address of the request is likely that there can potentially be multiple relays in the path. If the response was simply returned to the last relay before the DHCP server, all the other intermediate relays would have to store state about in-flight requests so that they could look up the correct next-hop at each stage of the return flow. That is inefficient and unnecessary compared to just naturally routing to the GIADDR
.
If the server doesn't have a route back to the client, DHCP will fail, especially later on during lease renewal which is generally a unicast operation between the client and the DHCP server (that does not involve relays).