To add some information over @CodesInChaos's good answer:
Using several hashes simultaneously has been suggested as a way to cope with future weaknesses of hash functions. For instance, you hash with MD5 and with SHA-1, so that your system remains robust even if one of them gets broken (regardless of which is broken). This is equivalent to defining a new hash function (let's call it SHAMD-51) which offers as output the concatenation of what SHA-1 and MD5, respectively, would produce over the input data.
It is easy to see that concatenation will give you a function which will be at least as resistant to collision as the strongest of the two. Unfortunately, resistance to preimages will be closer to that of the weakest of the two functions. Generally speaking, concatenation is not a good way of building hash functions: you do not get your money worth, i.e. not as much security as you could pretend for, given your computing effort and the output size you have to contend with. See this answer for some more analysis and pointers.
Offering the choice between several hash functions is much better, since it allows you to select one which matches your architecture, for better performance. Note that hashing tends to be fast anyway; when hashing files from disk, or data from the network, the hash function is rarely the bottleneck. As for all performance issues, the first thing to do is to measure: there is no performance issue unless one has been reliably detected and quantified.
Choice of hash function is also neat when you have to comply with inflexible regulations (which could mandate use of an "Approved" function, with an uppercase letter).
In practice, a lot of systems where multiple hash functions can be used together do so because of some irrational belief that cryptography is like ranch sauce which can make the worst roadkill edible as long as you add enough of it.
Note: there is no mathematical proof that any given hash function is secure. Actually, there is no mathematical proof that there can exist such a thing as a secure hash function. The best we have are hash function which were deployed "in the wild" for a long time, and survived the wanton assaults from hordes of enraged cryptographers. The SHA-2 functions (SHA-256, SHA-512) are such functions.