It seems that eglot used to send an empty object as the params but it got replaced by null to appease gopls.

https://github.com/joaotavora/eglot/commit/4f6e152e1c5efc39a888f747ecca313a58f4375e

The fix would be replacing the call
(jsonrpc-request server :shutdown nil :timeout (or timeout 1.5))
with
(jsonrpc-request server :shutdown eglot--{} :timeout (or timeout 1.5))

--
"I object to doing things that computers can do." — Olin Shivers