React 0.14.8 correct sets the defaultValue for `<select>` when using `<optgroup>`:
https://jsfiddle.net/6v8cnowo/

However, 15.0 RC2 defaults to the first `<option>`:
https://jsfiddle.net/p2ctcgwj/1/

I'm not very familiar with the React codebase, but I suspect it has something to do with a change made in 1dca72e, specifically this line: https://github.com/facebook/react/blame/master/src/renderers/dom/client/wrappers/ReactDOMOption.js#L35

<option key="monkey" value="monkey">A monkey!</option>
        <option key="giraffe" value="giraffe">A giraffe!</option>
        <option key="gorilla" value="gorilla">A gorilla!</option>
      </select>,
      container
    );
    expect(node.options[0].selected).toBe(false);  
    expect(node.options[1].selected).toBe(false);  
    expect(node.options[2].selected).toBe(false);  
  });
  it('should warn if value is null', function() {
    spyOn(console, 'error');
    ReactTestUtils.renderIntoDocument(<select value={null}><option value="test"/></select>);
    expect(console.error.argsForCall[0][0]).toContain(
      '`value` prop on `select` should not be null. ' +
      'Consider using the empty string to clear the component or `undefined` ' +
      'for uncontrolled components.'
    );
    ReactTestUtils.renderIntoDocument(<select value={null}><option value="test"/></select>);
    expect(console.error.argsForCall.length).toBe(1);
  });
  it('should refresh state on change', function() {
    var stub =
      <select value="giraffe" onChange={noop}>
        <option value="monkey">A monkey!</option>
        <option value="giraffe">A giraffe!</option>
        <option value="gorilla">A gorilla!</option>
      </select>;
    stub = ReactTestUtils.renderIntoDocument(stub);
    var node = ReactDOM.findDOMNode(stub);