Why does drush en give differerent results than enabling mymodule 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.