I ran into the exact same problem. Check to make sure when you create the user in BootStrap.groovy that you create the user first with a password and all of the fields, even if they are optional (not sure why). Then create the new Role and then add the person to the role.
One way to check if the user is getting assigned to the role is to look at the role_people table which maps users to roles.
This is my BootStrap.groovy file:
class BootStrap {
// include this line to encode password for ACEGI
def authenticateService
def init = { servletContext ->
//create admin user
def password = authenticateService.passwordEncoder("password")
def superadmin = new User(username:"admin",userRealName:"Administrator",passwd:password,enabled:true,emailShow:true,description:"admin user",email:"put email here").save()
//create admin role
def sudo = new Role(authority:"ROLE_ADMIN",description:"Site Administrator")
// now add the User to the role
sudo.addToPeople(superadmin)
sudo.save()
new Role(authority:"ROLE_USER",description:"User").save()
}
def destroy = {
}
}