No, it is not wrong. It probably means you have multiple solutions or that the differences are merely floating point noise. You should check the objective function value at each solution to be sure.
Neither method 1 and 2 are generally the most efficient, however. The efficient way is to derive a simpler objective function in which x1 is the only input. For example, if your original objective function were,
the efficient approach when x2=1 would be to simplify this to,
This way, you avoid doing extra arithmetic with x2 every time fmincon calls your objective.