The main cost of running a web host is bandwidth (the amount of information transfered to and from your site)Most free web hosts pay for their service by showing banners or other adverts on your web pages, i.e. a person sees one web page they see 1 or more ads. Usually this can, just about, cover their costs (free hosting is an incredibly tough business to succeed in). It is even possible to offer "unlmited bandwidth" (usually with some limits) if they can ensure people are actually viewing enough ads to cover the cost of serving all these HTML pages.
Now the reason you will find that most free hosts do not allow large files or large downloads is because they don't result in ad displays, so are a money losing proposition for them.
If you must have free, I would say your best bet is probably to check out very large ISPs which give free web space. Some of the big ones have so much bandwidth that they simply don't care about downloads (although there may be limits)
I think you will probably have a tough time finding a free host for a site that allows large downloads. I am not saying there are none, but it's going to be hard to find one
Paid for web hosts work on a different model. Your monthly fee pays for the bandwidth (up to some limit), and they don't have to worry about showing ads. Most paid hosts will allow downloadable files (except maybe very cheap ones).
I don't have any direct personal experience of sub $5 per month hosting, but there are some, and there are quite a few good ones in the $5 to $20 per month range. Checkwww.webhostingpicks.com