Why is scriptSig filled with scriptPubKey before signing a transaction?
There seem to be no reason: Ken Shirriff's blog explained it this way:


  Then the signature is turned into code in the Script language,
  creating the scriptSig script that is embedded in the transaction. It
  appears that using the previous transaction's scriptPubKey during
  signing is for historical reasons rather than any logical reason.[17]


and the link points to a thread from 2013:
https://bitcointalk.org/index.php?topic=102487.msg1123257#msg1123257