Generally there are two types of Key Generation available as offline and online generation.
Offline Generation is like CA will create the key pairs and issue certificate to the other party by means of trustworthy between them as means of generation and issuance. And also in some cases , the endusers or subscribers will not aware of what is CSR and key pairs , in this case the CA needs to provide a user friendly mechanism to get the certificate.
Online Generation is like you do get the certificate from trusted third party by providing the CSR as input. Here the user is well aware of security tools.
Note: In the offline cases, your private key is with CA. either he can miss use that for any time for being situation. And also by genuine reason some stolen your private key and misused, you need to untrustworthy of your CA. So its better to avoid the key generation from CA side.
Even most of the PKI infrastructure provide the flexible of generating the key pair in the browsers even the endusers or subscriber will not aware of it just by clicking the OK button.