Разница между constructor и getInitialState — это разница между ES6 и ES5.
getInitialState используется с React.createClass, а
constructor используется с React.Component.

Следовательно, вопрос сводится к преимуществам/недостаткам использования ES6 или ES5.

Посмотрим на разницу в коде

ES5

var TodoApp = React.createClass({ 
  propTypes: {
    title: PropTypes.string.isRequired
  },
  getInitialState () { 
    return {
      items: []
    }; 
  }
});

ES6

class TodoApp extends React.Component {
  constructor () {
    super()
    this.state = {
      items: []
    }
  }
};

Сообщество React приближается к ES6. Также это считается лучшей практикой.

Есть некоторые различия между React.createClass и React.Component. Например, как в этих случаях обрабатывается this.

constructor также можно использовать для обработки таких ситуаций. Чтобы связать методы с экземпляром компонента, его можно предварительно связать в файле constructor.