Assign new customer with specific user role upon checkout registration
Surely If someone creates the order the the order is associated to that user, so in this case you don't need to wory about user being created, what you can do is look in to:

hook_ENTITY_TYPE_update()

this way your going from the order status being upgraded to paid or whatever I dont know what the entity name for the order is but you could grab that loaded it, get the user id and check the roles , if no role add new role to them and save. as a bonus you have more control over what type of products to restrict it to ect.