With a current round of updates to Media functionality in the last few months, I am finding that WordPress (self-hosted) is becoming my go-to solution for photo sharing. Here is how using WordPress can meet your requirements:
Events Based Photo Sharing
How you define an 'event' and 'grouping' is certainly up to interpretation, but if you were to create a post type of 'Event', a gallery of photos can be attached to each event post to keep a logical hierarchy. Filtering that grouping with metadata like Categories or Tags (supported out-of-box in WordPress) allows for free-form taxonomy across all media and posts. Additionally, if you need WordPress to handle more event management beyond grouping events, there are plugins available for that level of detailed event management: Events
Private
WordPress by default provides an authentication and authorization system, but if you have another service (Google, Facebook, Twitter, LDAP, Active Directory, etc etc etc) that you prefer to use for one or both of those purposes, the plugins are available, and most are battled-tested. Again, this is personal preference as to what is the most unifying way to provide people access without having to necessarily create 'yet another another password'.
Downloadable Images
The simplest way I can imagine doing this with WordPress is attaching a gallery of images to a post, with a .zip attached containing all the images uploaded and a link provided. Latitude to be creative with this requirement is pretty wide.
Comments/Description
Two different things, in most contexts. Again, especially with recent updates, WordPress Media functionality is very robust, and all levels of image description (written description down to metadata/RDF) data fields are provided for each photo. Commenting, by default, is available in WordPress at the Post level.
Easy Upload
Ease of access to the upload system depends on your authentication/authorization provider, but the newest iterations of WordPress allow drag-and-dropping of images right into the Media library.
WordPress is open-source and self-hosted, with less than a five minute install in most cases.