We are implementing an ethereum payment for our customers and need to decide between deposits to a smart contract or individual customer addresses. What are pros and cons? Is it possible to hide our smart contract's balance if we use it for all payments? Why do some exchanges do not accept payments from smart contracts - is it because of missing customer tracking information?
It's different, but only slightly more complicated. Transactions from EOA (externally owned accounts, e.g. private key signs a transaction) have a destination and an amount. The exchange or service can monitor the mempool and see that the transaction is to their address and let you know "hey, we see your transaction, we're waiting for it to be mined and x confirmations to confirm it!".
Transactions from contracts are different though. Transactions from contracts aren't even transactions, they're "message calls". Since all transactions from contracts are started from EOA accounts, message calls from contracts don't show in the mempool and they aren't even included in blocks, only the initial transaction that caused the contract transaction is in the block. This is how payments from contracts would work in practice:
I send a tx to my Multisig contract saying "send 1 ETH to this address"
The Multisig, in the same transaction, sends a message call to the address I told it to with the amount of ETH I told it to send.
Since the transaction that causes the ETH to go to the service isn't actually to the service, it's to the Multisig, the service/exchange can't just monitor for transactions to their address. They'd have to run every transaction they see and see if it sends to their address. Additionally, it's possible that the transactions outcome could change in a future block. Say my Multisig says "if the current block number is odd, never send the ETH", but the exchange tested the transaction on an even block, they would be wrong about getting the ETH if it was mined in an odd block.
At the end of the day, the service/exchange can just ping for changes in their wallets balance instead of trying to listen for transactions to their address, but many just don't want to do this.