Are you familiar with Vim's code? Just look at all the OS-specific files in the source tree[1]. Not only that, there are ifdefs-galore in the shared code. RealWaitForChar is over 400 lines and contains 41 ifdefs.[2] Many are for long-dead features or platforms. That function just waits for user input, but it has to be ridiculously complicated to account for platforms without basic functions like select(). The infamous eval.c starts off with ifdefs for Amiga, VMS, and Mac OS Classic.[3] Neovim has ripped out tons of this stuff, and it's drastically reduced line count.
How does this stuff get in the way of the features that NeoVim intends to add? -- features they list such as "job control", a msgpack remote API, or a new plugin architecture. (I don't really expect you to be capable of answering this question unless you're familiar enough with the code to give an operational description of how these ifdefs get in the way.)
It depends on how much the compatibility issues have been factored out into external libraries. In the case of vim, I think the answer is "substantially not".