Does "drush dl" allow to download a module from a site that is not drupal.org?
It looks like the source url for project downloads is context-specific - so you can set, for example, cli.source to something other than the default Drupal server, and Drush will look there for new releases. 

I can't see anything in the code that would suggest that this can be done per-project though, just globally/per context (it's in [drush]/commands/pm/downloads.pm.inc if you're interested).

It is possible per-module using core functionality, i.e. adding this to your module's install file:

project status url


which:


  Allows module maintainers to define a URL to check for updates to their module using the Update status module. No module released on drupal.org should define this parameter. URL should point to an XML feed that accepts requests in the form of http://my.domain.com/projects/{project}/{core}. In that example, project status url should be set to http://my.domain.com/projects.


But it looks like Drush is expecting the remote server to provide data in Drupal's update XML format regardless of the source, so I don't think you'll be able to integrate this with Github without implementing some middleware.