On my project I’m currently working on I needed to use optgroups. After looking high and low through the documentation and the code I discovered the feature kind of worked, but kind of didn’t. I issued a pull request that fixed the code for the next release (2.0.1) but here’s the skinny on how to set it up.
When setting the valueOptions attribute of a SelectElement specify an array as follows for optgroup support.
return array( array('label' => 'Jazz', 'options' => array( 'Acid', 'Cool', 'Smooth' ) ), array('label' => 'Rock', 'options' => array( 'Alternative Rock', 'Folk Rock', 'Garage Rock', 'Hard Rock', 'Heavy Metal' ) ) );