It is the intended behavior if the gaincal solutions for a specified solint (solution interval) gives the time step interval between gains somewhat different from the one specified in solint.
For example, If specified solint = '500s' but the interpolated time step take on values like 526s, 510s, 493s etc.
It is not (despite its name), the strict interval at which solutions are desired. Rather, it is the maximum contiguous duration of visibility data used per solution. In general, patterns of observing do not lend themselves to yielding calibration solutions on a strict time grid _and_ with ~uniform sensitivity. The solint will effectively set the maximum sensitivity of the solutions you will get.
It is also helpful to think of the solint as the longest duration for which the thing being solved for is assumed to be stable. So, for bandpass, you'd often use solint='inf' (and combine='scan' to assert the assumption that it is indefinitely stable (at least for the current observation), and the solve will use as much data as possible (within the data selected for bandpass) to get a single bandpass solution. Gain solutions usually have relatively short solint to track residual atmospheric variability.
It is also helpful to think of the solint as the longest duration for which the thing being solved for is assumed to be stable. So, for bandpass, you'd often use solint='inf' (and combine='scan' to assert the assumption that it is indefinitely stable (at least for the current observation), and the solve will use as much data as possible (within the data selected for bandpass) to get a single bandpass solution. Gain solutions usually have relatively short solint to track residual atmospheric variability.
So, shorter solint will yield less-sensitive solutions with more rapid (if not strictly gridded) time sampling, and in marginal cases you have to strike a balance between enough sensitivity and enough sampling. (For ALMA, you should think of WVR as means of reducing phase variability so that you can use a longer soling and get more sensitivity per solution. Similarly, transferring gains from a lower-freq band to a higher one has a similar intent.)
Finally, the sequence of solution timestamps will not be an accurate indication of the duration of each solution. The timestamp assigned to a solution depends on the distribution of weighted and unflagged data within the solution interval. Also, unless scan durations are an integral multiple of solint, you will tend to get a solution at the end of each scan which is a bit less sensitive than the others.