It doesn't seem to be any relevant computational penalty:
(when (equal arg '(4))
(setq org-select-this-todo-keyword
(completing-read "Keyword (or KWD1|K2D2|...): "
(mapcar #'list kwds) nil nil)))
<------------ (1)
(and (equal 0 arg) (setq org-select-this-todo-keyword nil))
(catch 'exit
(when org-agenda-sticky
(setq org-agenda-buffer-name
(if (stringp org-select-this-todo-keyword)
(format "*Org Agenda(%s:%s)*" (or org-keys "t")
org-select-this-todo-keyword)
(format "*Org Agenda(%s)*" (or org-keys "t")))))
(org-agenda-prepare "TODO") <------------ (2)
It's true that the user might abort the prompt (1) without executing
(2) but that's an exceptional use case.