Why are pre-softfork blocks are not causing problems for post-softfork clients?
Your question is about deployment.

Softforking changing generally are not applied unconditionally to every block in history. Instead, an activation mechanism is used so that all clients know when they need to start being enforced. Before that activation point, new clients still enforce the old rules but not the new ones.

Activation mechanisms that have been used in the past:


Time-based (apply to every block whose timestamp is past a fixed point in time). Used in BIP16 and BIP30.
nVersion signalling (apply to every block after the first range of 1000 blocks in which at least 750 have a nVersion field that is higher than a specified value). Used in BIP34, BIP66, BIP65
Versionbits signalling (using signalling on individual bits of the nVersion field; see BIP9). Used in BIP141/143/144/147.