My last comment on this issue (don't want to drag it further):

When the OP says;

  emacs -Q
  M-x desktop-save-mode
  C-h v kill-emacs-hook
  M-x kill-emacs

  Expected behavior: emacs is killed.
  Actual behavior: asked "Save desktop? (y or n)"​

I say:

  emacs -Q
  (require 'emacs-lock) <C-x C-e>
  (emacs-lock-mode 'exit) <C-x C-e>
  M-x kill-emacs <RET>

  Expected behavior: emacs is killed ???
  Actual behavior: => Emacs cannot exit because buffer "*scratch*" is locked

Because I use emacs-lock and I certainly wouldn't expect it to be killed.