A Coinbase exchange engineer said:
"Depositing from smart contracts is hard. Smart contract outputs are not like normal ETH transactions and it is non-trivial for us to get notified when we receive coins from smart contracts."
Similarly, the Bitfinex exchange says:
"At this time Bitfinex does not support Ethereum transactions generated from smart contracts. To avoid missing deposits or deposit delays ETH should only be sent in traditional transactions. If you are uncertain that your deposit will not be sent as part of an Ethereum contract execution, please find out for sure before sending your deposit."
What is the technical difference between transactions generated by smart contracts and transactions generated by humans? Why is it harder to be notified when a coin is received from a smart contract (how would an exchange get notified when they receive coins from a human, and how would they get notified when they receive coins from a smart contract, and why is this different)? What was the motivation for this design choice by the Ethereum designers? Where can I go to read more details?
I skimmed https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions but did not see the answer there.