I thought binding fontification-functions to nil was done there exactly
with that intent: to affect what the display engine subsequently does.
Can't be done, because redisplay runs only _after_ the scroll command
returns, at which point this binding is undone. You can easily see
this in a debugger: put a breakpoint inside redisplay_internal right
after the specbind line is executed, then type
(gdb) p Fsymbol_value (Qfontification_functions)
You will see the value is a cons cell, not nil.
What that binding does is affect the portions of display code that are
run as part of window_scroll_pixel_based, which the scroll command
calls to calculate a suitable position of window-start by simulating
display. That display code runs with fontifications disabled, which
makes it faster.
All the scroll commands in Emacs do is more or less calculate the
window-start point; the rest is done when redisplay kicks in.