To emulate the desired behavior, I lifted this from tab-bar's implementation for a proof-of-concept.
(defun header-line-format-align-right ()
"Align the rest of `header-line' items to the right."
(let* ((rest (cdr (member '(:eval (header-line-format-align-right)) header-line-format)))
(rest (tab-bar-format-list rest)) ; replace tab-bar-format-list with your own beyond this POC
(rest (mapconcat (lambda (item) (nth 2 item)) rest ""))
(hpos (progn
(add-face-text-property 0 (length rest) 'header-line t rest)
(string-pixel-width rest)))
(str (propertize " " 'display
;; The `right' spec doesn't work on TTY frames
;; when windows are split horizontally (bug#59620)
(if (window-system)
`(space :align-to (- right (,hpos)))
`(space :align-to (,(- (frame-inner-width) hpos)))))))
`((align-right menu-item ,str ignore))))
(setq header-line-format '("TEST HEADER LINE" (:eval (header-line-format-align-right)) (lambda () "FOO BAR BAZ")))
One gotcha is that tab-bar-format-list relies on "rest" being a list of functions, hence the lambda at the end.
Adapt as you see fit.
-Stephane