What's the best address generation practice for Shelly

Since Icarus, wallets use sequential derivation which must satisfy very specific rules: a wallet is not allowed to use addresses beyond a certain limit before previously generated addresses have been used. This means that, at a given point in a time, a wallet has both a minimum and a maximum number of possible unused addresses. By default, the maximum number of consecutive unused addresses is set to 20 .

The doc of adrestia says that.

What’s the meaning of used for an address? If it means there are unspent UTXO in the address, I’m considering how to integrate Shelly via API for an exchange. An exchange need to distribute lots of addresses to users, but those addresses might not be used by the users. Then there are lots unused addresses in the wallet and new address could not be generated.

So, what’s the best way to do the address generation in Shelly?