Here's how it works. Have a look at the constructor for Zend_Form. It accepts an $options parameter, which can be an associative array or Zend_Config instance. If it's an array, setOptions() is called. If it's a Zend_Config instance, setConfig() is called, which then converts the Zend_Config instance to an associative array and passes that to setOptions(). So, either way, you end up in the same method with the same type of data. setOptions() then iterates over the associative array it receives. It takes the index of each element and looks for a corresponding setter method.
This method helps to reduce the overall function calls (including a method_exists) and can help to produce cleaner code in the process. A comment on the post also points out related comments from Matthew Weier O'Phinney about these options.