I believe the problem there is that the constructed F(F) input itself would not run in finite space:

* F(F) internally runs its implementation of D's code on (F, F)

* ...which runs F(F) plus some constant-factor-overhead

* ...which runs its implementation of D's code on (F, F)

* ...which runs F(F) plus some constant-factor-overhead

* etc.

Ends up with the F emulating itself recursively, with the overhead adding up.

Note that the claim I make of D is that for any input system that runs in finite-but-unbounded space it will determine whether it halts in finite-but-unbounded space - not for input systems that already by themselves use infinite space.