Q:

Why does the web need HTTP?

No, wait. I'm being totally serious. When HTTP was invented, FTP already existed. Why couldn't FTP be the web's transport protocol?
Sure, it has a lot of missing feautres, but most were added as an afterthought to HTTP and could be added to FTP too, such as caching, compression, virtual hosting.
You could event think of a protocol like CGI that allowed to automatically generate FTP files (pages).

A:

Yes, you can serve HTML files using FTP.  However FTP is a heavy-weight, stateful, protocol and assumes you will be staying on the same server.  It is optimized for downloading larger files (where the setup overhead is amortized over the size and number of downloads)  HTTP is very light-weight (you can communicate to an HTTP server using TELNET much easier than FTP, especially before PASSIVE FTP) and is designed around HTML -- the concept that in the course of your navigation you will be visiting many different servers and grabbing only a couple of files at a time from each.
Gopher existed before HTML and was very popular.  It was also a light-weight protocol.  It just didn't have the presentation and ease of entry that HTML had.
The short answer is, people invented all sorts of protocols for all sorts of reasons (i.e. doctoral theses) -- HTTP managed to come along at the right time and have the right set of features.
BTW, CGI wasn't even a part of HTTP at the beginning.  It came along later -- and it was far easier to shoehorn CGI into HTTP than into FTP because of the simple, stateless protocol.
Oh, and there was no "web" before HTTP/HTML.  The web needs HTTP because HTTP created the web.

A:

There's no reason you couldn't. It would have been cumbersome, tacky and annoying though. I mean, you can make a boat out of a VW bug body. Doesn't mean it's a good idea.

