I figured out the cause of the variation, or at least the main contribution. EnergyPlus is using an outdoor air density calculation when converting the infiltration into a mass flow rate which is derived from site air pressure and temperature. So the fluctuation reflects changes in the site outdoor temperture and air pressure. There doesn’t seem to be any mention of this at all in the EP documentation, but this Unmet Hours post[1] breaks down the formula they’re using - essentially adjusting pressure for zone height, then converting this to a density with the ideal gas law.
All the reported EP infiltration volume-based outputs takes this mass flow (derived with an outdoor temperate-adjusted density) and converts it to a volume with an air density derived from the zone temperature (otherwise the same formula). Thus all volume outputs (including the ACH) will differ from their input value.
if you just want to convert between volume flow inputs and outputs, all of this simplfies to a simple ratio between the outdoor and indoor temperature which can be multiplied to your inputs to match the EP output. I.e:
ACH_{out} = ACH_{in} \cdot \frac{T_{out} + 273.15}{T_{in} +273.15}
Here’s an example from a simple shoebox model I tested this with:
Although, its best to avoid using the volume-based outputs altogether if there’s a choice. The mass-based outputs are what’s actually being used in EP’s heat and mass balance, and thus are reliably downstream of any adjustments EP makes that may or may not make it to the documentation.
[1] Note that the formula in that post refers to the “Standard” density, which is a single constant density from a single assumed value for the pressure and temperature. Substitute the actual pressure/temperature values derived/interpolated per timestep by EP (as illustrated in that Excel sheet) to get the actual, varying densities.