I am still not sure why you ran into this problem, but the development team tells me that it is not a bug that causes the internal state of the solver to change to Vectorized, this is something that the integer ga algorithm does. However, your fitness function is not supposed to see this, there is a wrapper for compatibility with non-vectorized fitness functions. So I am really not sure what is happening.
As to your second question or comment, you are free to change your crossover function by using your own version of integer ga in the following way. Set your population type to 'custom', and make your own creation, mutation, and crossover functions in a way that keeps your problem pure integer. Sorry, but if you want to use the built-in MILP solver, you have to use the built-in limitations of that solver.
If you still believe that you have uncovered a bug in the solver, please contact technical support--I am not equipped to diagnose a full-fledged detailed problem.
MATLAB mathematical toolbox documentation