Any decent wallet (like Bitcoin Core's wallet) will give you the possibility to both:
1) Send change to a custom address
2) Send change to a brand newly generated address
As far as I know all of the popular wallets send your change to a new address (like Electrum)
But in exchanges, who knows, I haven't paid attention to that. For example when you withdraw, they may not botter and just send you the change to the same address.. I think this is the case since in exchanges you can only manage 1 deposit address typically (which sucks for privacy). In Poloniex i've always had the same address. I tried creating another account, and it looks like it's 1 account = 1 deposit address, so the change could only go back to your deposit address when you withdraw.