Why does drush en give differerent results than enabling mymodule in the ui? When I perform drush en mymodule -y my module enables no problems. When I do the same in the UI it seems to install great. No errors. However the roles defined in hook_install() are not created. In Drush they are. What is the difference between Drush and Enabling the module in the UI?
One gotcha between the UI and Drush is the user. Drush commands are run as anonymous by default. Where as in the UI you are user with greater rights (normally the admin user).

Some parts of Drupal will check for rights before doing things, node_save is one such place. Depending on how you are creating your roll you may find there is another. 

A work around for this is to use the -u flag with Drush. 

drush -u 1 en my_module


I can't say for certain that this will fix your issue, but there is a fair chance that it will help.