The MIPGap parameter controls the minimal quality of the returned solution. It is an upper bound on the actual MIP gap of the final solution. It can happen that Gurobi runs until finding a solution that is significantly better than the MIP gap because it is not always possible to terminate with the given MIP gap requirement. One reason is that the gap improvement is happening in jumps rather than a continuous progression:
Please note that the MIPGap parameter is not just a termination criterion but also influences the algorithm in other parts. It may happen that the solver takes a different path and behaves differently when using a different MIPGap.
Recall that the gap in Gurobi is computed using the following formula:
\[\frac{\left| \text{ObjBound} - \text{ObjVal} \right|}{\left| \text{ObjVal} \right|}\]