正解は「コンポーネントが複数回使用された際、それぞれが独立したデータ(状態)を持つようにするため」です。もし単なるオブジェクトで定義してしまうと、そのコンポーネントを複数の場所で使った時に、1箇所でデータを変更すると他の全ての場所でもデータが変わってしまいます(参照の共有)。関数にして毎回新しいオブジェクトを返すことで、この状態の共有(汚染)を防ぎます。