As far as I know, script address is the hash of the validator script. (Or has the hash of the validator script. I don't know which). So when a node wants to validate that address, It needs to run the validator script. So how does the node access the script?
A validator script is compiled into Plutus Core by the Plutus Tx compiler. (It's actually a bit more complicated: see https://iohk.io/en/blog/posts/2021/02/02/plutus-tx-compiling-haskell-into-plutus-core/)
This compiled script is shipped within the transaction.
Hashing the validation script ensures that funds potentially located at a script address can only be consumed by transactions that include the exact same script.
Someone managed to write some code which retrieves the scripts from the chain https://forum.cardano.org/t/proving-a-particular-policy-script-constraint-i-e-before/57443/11