Immediately after PC power on, the contents of RAM is somewhat random. Certainly, in a good percentage of RAM addresses, the contents of the PARITY bit chip is not going to reflect the parity of the contents of RAM chips bits 0 to 7. That is why one of the things that the POST does on power up (after setting up refresh, and before enabling the NMI) is to write to all RAM addresses that are parity checked. The act of writing to each address will set the correct value into the PARITY chip.
RAM in early video cards is not parity checked, and so I agree with Chuck in that the POST is probably not doing its 'initialise parity bit' routine past the 640K mark.
And so at computer power on, after the POST, your block of RAM has a quantity of addresses where the PARITY bit is incorrect. For some of those 'parity chip contents incorrect' addresses, whatever you are loading into the RAM will perform a write to the address. No issue there, and in the act of writing, the PARITY bit gets initialised to a correct value. But in some cases, 'parity chip contents incorrect' addresses will be read before they are written. For each of those, a parity error will be generated.
A warm boot is not going to change the situation much.
As Chuck alluded to, before you access your block of RAM, some code needs to run that writes to every address in your RAM block. I'm confident that that is a fix.
Disabling the NMI will work too, but has at least a couple of disadvantages:
1. If a RAM chip later becomes intermittent, you're not going to be alerted to the fact (via a PARITY error message).
2. Can't use an 8087 (it uses the NMI).
Whichever path you choose (write all RAM, or disable NMI), it has to be done before any code reads a 'yet to be written to' address in your RAM block. And so, as Chuck suggested, a dummy driver (that writes to all your RAM block, or disables NMI) loaded early in CONFIG.SYS should be the answer.