Yes, in this example, your solution is fine.
Perhaps the example just wanted to show the use of epsilon transitions. Also, your approach would be more complicated in the case where one of the original initial states would have a loop. We cannot transfer that loop to the common initial state.
Whilst your answer correctly solves the tasks of recognising which strings belong to the regular expression, without the epsilon transitions the behaviour is entirely deterministic. This means that strictly speaking you have constructed a DFA, and not an NFA. It's a subtle difference and I would argue that this example probably isn't the best, but a strict professor would be justified in not giving full marks.