From what I gathered when I was working on this problem, the main difference is in the level of abstraction of the modules.
LWP::UserAgent will not give you a direct socket, while
Net::HTTPTunnel will return a TCP socket which is tunneled transparently through the proxy you specify. You can then write what you will to the server, such as the HTTP GET request as shown in the example.
But if you just want to retrieve a page like I did, the critical difference was that
Net::HTTPTunnel worked swimmingly with my proxy while
LWP::UserAgent seemed unable to authenticate properly. Perhaps a more experienced monk can explain the underlying mechanics.