In our case we ended up sticking with individual file downloads because of the potentially massive amount of resources and bandwidth this can eat but it's a potential solution if you're not serving large numbers of files. Then just send the resulting zip file to the user. (1) Click on the file (2) Reveal toolbar options such as link to file, share file, preview file, trash file, locate the folder it is in and more options to copy the.
Regardless, once you have all of the files, you can then zip them up using any number of zip libs that are out there. In the new Google Drive you single click a file to reveal toolbar options and to utilize the info pane to find out information about the file. Depending on how many files you're planning on handling per request you can either keep them all in memory or temporarily store them on the disk or in a database. Then you'll loop through that array and grab the 'downloadURL' value for each file and perform a cURL to the url provided. To do that, first you'll need to get an array of the Drive files that you want to download whether that's some you generate programmatically or through check-boxes on the front-end. So the idea was to let the users select which files they'd like to download and then present them with a zip file containing the files. With that many files, it's ridiculously tedious for users to download files one at a time.
I'm serving up hundreds of thousands of files to clients using a Drive folder as the storage with a custom built front-end built with the Drive API. I've been faced with a similar problem and while there's currently no way of doing this through Drive (to my knowledge), this is the solution I came up with.