Why would an Initialization Vector be supplied externally?
It offers more flexibility in using that API. Having a separate IV parameter enables bigger plaintexts than would not be possible in a single invocation, because of for example memory restrictions. 

I assume CBC is used. You generate the IV and invoke the encryption on the first part of the big plaintext with the generated IV. For every other part of the plaintext, you take the last block of the previous ciphertext and use it as an IV to get the ciphertext of the current plaintext part. You then concatenate every ciphertext part to get a ciphertext which is the same as you would have got in a single invocation on the complete plaintext.