As per the basic rules of blockchains believe it is mentioned that no service call from the smart contract should be made where the result is non deterministic.
What I understand is if the result is non deterministic in that case, when the transaction will be executed in different nodes it will not be possible to reach consensus as everyone may get different results.
When a new node is added it is expected to first sync to get the whole distributed ledger downloaded.
Believe every new node added on the blockchain network verifies all the previously generated transactions. So in this case it will invoke this external service as well to verify the result and based on the output will behave accordingly.
But found using Oraclize one can invoke external services from smart contract. So if the above assumption is correct then how come it is feasible to invoke external services or are they invoked for specific scenarios only