I think @MainMa's answer is good, but it does imply a certain type of organization.
In smaller shops that do agency-type work, there are occasions where developers don't have actual project work. This can be the result of the general traffic in the company, and having projects that aren't quite ready for development, projects out for client review, etc. As a lead developer in a company like this, I don't necessarily want my team touching projects in this case. Assuming you have someone to manage this well, it happens rarely, but it does occur from time to time.
If you don't have an office manager (or interns), all staff have the responsibilities for keeping the office going. In our shop, everyone has a "office job" that takes up an hour or two each week. When I started, my assignment was handling the orders for office supplies. While not "billable", these things need to get done.
Outside of this, when someone has actual downtime, I have my team do directed research. For example.
I saw the Foo project on GitHub. Until the feedback comes in on Bar, see if it is a good fit for future projects.
I will also have people mine recently completed projects for pearls that can be improved upon an reused for future projects.