Unfortunately, you're telling it to run the function at 04:00am today. Unless you evaluated that code between midnight and 4am, that's a target time in the past, and so Emacs runs it ASAP.
The run-at-time code knows this is a bit dumb:
;; Handle "11:23pm" and the like. Interpret it as meaning today
;; which admittedly is rather stupid if we ...
You can set the mode line to be fixed with
(setq-default mode-line-format "FOO")
It will always show "FOO" and nothing else.
I assume that if you do
(setq-default mode-line-format '("" display-time-string org-mode-line-string org-timer-mode-line-string " " est-target))
and enable things appropriately (e.g. you have ...