Modulo bugs and such, the two have basically different intents. The first does batch style processing. That is to say: you give it one complete string, and it produces a hash of that complete string.
The second does hashing incrementally. If you don't have (or want) access to the entire string to be hashed at once, it allows you to read some data, operate on it, read some more, operate on it, and so on until you've read all the data. At the end, you can get the overall hash of the entire data stream.
Just for example, let's assume you're running this on a computer with 4 Gigs of RAM, and you want to hash a 16 gigabyte file. Since the data won't fit in RAM (or even close to it) the second is probably a better choice for this case. Likewise, if you're receiving data over the network, but don't (necessarily) want to store all the raw packets just so you can hash them and (for example) acknowledge receipt.