Can a single wallet generate (and use) both SegWit and non-SegWit addresses?
I am not familiar with the wallets generated by BitPay's Bitcore specifically, but there is no general issue preventing a wallet from generating addresses of various output formats. If BitPay's wallets can only either do one or the other that would be a local implementation quirk.
While it is possible to maintain separate wallets for each user, it is rather costly to do your accounting on-chain.
The more common mode of operations for services that take custody of user funds is to only maintain a single deposit wallet. You would then generate a new address on this &quot;omnibus wallet&quot; for each user deposit. Since the addresses are unique, you can use the address to tell which customer to credit in your internal accounting.
However, on the operational side, you can batch multiple withdrawals into a single transaction and even move part of the funds to a cold wallet to improve your security.