As for using other techniques, I don't think it necessarily makes more sense to use them. The natural statement of the problem is an optimization problem, not a constraint satisfaction problem, so using an optimization method seems reasonable to me. On problems that are highly constrained (few/one feasible solution[s]) it would probably make more sense to try a constraint programming approach, but this particular problem has many (too many?) feasible solutions so I don't think there is any reason to believe they'd be better.
One downside to MIP is the need to model the logical constraints as linear equations, which is perhaps less expressive than the way you can often express constraints in constraint programming languages.