grub.cfg is missing a command for terminal_input, so when a serial console is enabled, the input is taken only from the graphic console. The result is that the grub menu is seen but doesn't respond to keystrokes.
The command added should be:
terminal_input serial console
In this case, a terminal in which you press any key will be selected as a GRUB terminal.
The first terminal that receives a keystroke will be selected so this shouldn't break the graphical menu.
The top of grub.cfg thus looks like:
set default=1 set timeout=5 serial --unit=0 --speed=115200 terminal_output --append serial terminal_input serial console