The default server group used in a captive portal profile is "Internal". This group has a server derived rule that states:
set role condiction role value-of
When a guest account is created in the internal database through the provisioning portal, they have a role of guest by default (I don't think you can change this); thus the server derived rule above will put them in the guest role (this overwrites the default roles in the profile). I usually create a new "internal" server without this rule and use it on captive portal profiles. This way you can use the default roles in the captive portal profile itself to dictate role assignment rather than everyone getting "guest".
If you create the accounts through the Internal DB outside of the provisioning portal, you can specifiy a different role; and if the above rule is in place, they will get that role; however if you remove the above rule, they'll get what is assigned in the CP profile for default roles. Alternatively, you can use other source for your user accounts; CP Guest, AD, other DBs and use server derived rules to assign varous roles.