Each user needs their own deposit address, for bookkeeping. If the cold storage is really offline, you'd have to manually create a new address for each new user.
"Hierarchical deterministic wallets" (BIP0032) support parallel generation of public and private keys on different systems.
The bookkeeping system can generate an unlimited number of addresses from the public "seed" that corresponds to the private keys that will eventually be generated using the private key seed stored in the cold wallet.
However, I didn't consider that the hot wallet needs to be replenished as people withdrawal, which would require a steady flow of bitcoins from cold to hot storage. I think it would make sense to have a "warm" wallet for all deposits, then immediately send deposits to hot or cold wallets depending on withdrawal demand.