The behavior described is due to how the variable step solver is interacting with the constraints and calculations of the Simulink model.
These model constraints include the Relative tolerance and Absolute tolerance parameters specified in the model's configuration parameters. In order to calculate solutions within these tolerances, the solver needs to work harder by taking additional minor time steps. For a brief explanation on minor time steps, please refer to the following link: The model consists of mostly continuous sample time. A benefit of a continuous sample time is the ability to use a variable-step continuous solver such as "ode45". Minor time steps are unique to continuous solvers, and enable Simulink to take more steps to refine a solution. A powerful application of this is in Zero-Crossing Detection that helps the solver resolve discontinuities that appear during simulation. Please refer to the following link on Zero-Crossing Detection:
On this page there is a list of blocks that detect and register zero-crossings, and "abs" is one of these blocks.
Any blocks that register zero-crossing detection can cause the solver to take additional minor time steps. Even if a single "abs" block is added to a model, this would change the number of time steps taken, and may result in a slightly different solution. These solutions do however conform to the tolerances specified in the configuration parameters of the model.
Although a certain calculation may be computed identically in two models, achieving a perfect match in results between the two may not be possible. However, you may be able to get the results closer by reducing the tolerance specifications in Configuration Parameters > Solver. Tightening the allowed tolerances should make the deviations in results smaller, though this will increase the amount of time it takes your simulation to finish.
The Simulink Debugger can be a valuable tool for inspecting which signals in a model are being driven by the solver tolerance settings. Refer to the following two links regarding using the Simulink Debugger for this purpose:
Best Answer