For a vanilla setup, .u.end[.z.d] is writing the data in the RDB to the hdb for the date .z.d, then flushing the RDB. By calling it again you overwriting the previously written data with the contents of the RDB, that have just been flushed and are therefore much smaller.
Well, EOD should only have a single trigger source and it should only occur once per day. Are you calling it manually for a reason?
I personally opt to have a process running on the HDB only. You could then adjust your EOD logic to check if a date exists before writing. A more simplistic, but less robust solution could be achieved by editing the rdb end function like so (note I have not tested this)
end:{$[()~key .u.lastEOD;.u.lastEOD:.z.d;if[x=.u.lasEOD;show “EOD already run”;:()]];t:tables.;t@:where g=attr each t@:sym;.Q.hdpf[$“:”,.u.x 1;:.;x;sym];@[;sym;g#] each t;}`