Just about every package includes simple "get" and "file index" facilities. Some go beyond that: Majordomo can be linked to an ftp-by-mail server, which can then get quite sophisticated. ListProc, in addition to basic GET, does automatic splitting and uuencoding of large files. LISTSERV supports those formats plus several others, at the user's request. SmartList, if Metamail is installed on your system, will use it to provide full and automatic MIME support, including uuencoding and base64 coding. To be honest, though, these systems really don't differ much on basic file delivery: all do the job, but none is a meant as an archive server. If archive service is what you need, you should read Piero Serini's "Archive Server FAQ", at <ftp://ftp.uu.net/usenet/news.answers/mail/archive-servers/faq>.
LISTSERV and CREN ListProc offer a "file subscription" service, where users can elect to be told when a particular file changes, and optionally to have it delivered at that time.
One sophisticated feature that truly can be of great use to your list's subscribers is archive searching, available in ListProc, LISTSERV, SmartList, and (in a limited form) Smof. The idea is, someone reading your list of policy announcements knows that in 1991 there was a message about "eating papayas on the job," and they want to find it. Rather than retrieving all the archives for that year, they ask the MLM to search them for the word "papaya." In ListProc the command is "search policy 'papaya"', where "policy" is the name of the list. ListProc then returns a simple "grep" of its archive, giving you the lines that matched your pattern along with the file names they're from. With SmartList, you'd send mail to "policy-request" with a subject or message body of "archive search papaya", "archive find papaya", or a few other synonyms. SmartList returns the matching filenames, line numbers, and total lines, up to some list-owner specified limit (to protect users from searches that retrieve enormous amounts of information). Smof lets you use standard "dir" and "get" commands with a parameter indicating "search header field X for word Y," so it's less flexible than the others (though still useful). In LISTSERV, finally, the command message is very complicated, and I won't even show it here: most people keep a search template in their inbox, editing it whenever they need to do a search (quite a change from the simplicity of most LISTSERV commands). There is some return on its complexity: LISTSERV's output can be individual messages, an index, or just about anything else you'd expect from a full-text database. It even does fuzzy matching ("sounds like"). But ah, it surely is complex.