1. your url looks like gopher://dipstick.io/0file or gopher://watchingpaintdry.museum/9folder/file. The filetype is part of the url, but only the client is aware of it -- it's not passed to the server.
2. When using a URL, the client has one idea of the file type but it does not necessarily match what the server thinks the file type is.
2. Error messages. HTTP has a status code to indicate the file doesn't exist (or was moved, etc). Gopher can send the error message back as the payload but... is that in text format or binary format? The server has no idea what format the client expects.
Always sending binary data and using out-of-band status codes and file type just keeps life simpler.