To add to Raghav Sood's answer above, beyond price volatility most of the generated addresses are "1 and done". Not only do they not want the price to change, they don't want to continue to watch addresses forever. They create a wallet address for that single deposit. They don't advertise an address to multiple users.
"But when i send money later, in some cases way later, they send it back."
They don't stop watching the address for some time after. A day, a week. It's the type of watching they get notified if something arrives in that wallet. Eventually every address is usually relegated to a "cycle" where instead of actively watching for a transaction, every address ever sent out to a customer get's checked once a day, once a week, etc. for any new deposits. This makes sure if a customer accidentally sent something later on, or had little gas in the original transaction, whatever the reason resulted in the transaction being severely delayed, the system will detect it and automatically return it without requiring customer support intervention.
Obviously every crypto processor can and is different, this seems to be the most common practice at the moment.