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

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>;
    var markup = ReactDOMServer.renderToString(stub);
    expect(markup).toContain('<option selected="" value="giraffe"');
    expect(markup).not.toContain('<option selected="" value="monkey"');
    expect(markup).not.toContain('<option selected="" value="gorilla"');
  });
  it('should support server-side rendering with defaultValue', function() {
    var stub =
      <select defaultValue="giraffe">
        <option value="monkey">A monkey!</option>
        <option value="giraffe">A giraffe!</option>
        <option value="gorilla">A gorilla!</option>
      </select>;
    var markup = ReactDOMServer.renderToString(stub);
    expect(markup).toContain('<option selected="" value="giraffe"');
    expect(markup).not.toContain('<option selected="" value="monkey"');
    expect(markup).not.toContain('<option selected="" value="gorilla"');
  });
  it('should support server-side rendering with multiple', function() {
    var stub =
      <select multiple={true} value={['giraffe', 'gorilla']} onChange={noop}>
        <option value="monkey">A monkey!</option>
        <option value="giraffe">A giraffe!</option>
        <option value="gorilla">A gorilla!</option>
      </select>;