On my other (laptop, timeout=11) machine, this works properly. I have a theory that somehow on the (desktop) timeout=45 machine maybe there is something making grub think that some key was pressed, thus interrupting the timeout...