We have now updated the development page describing changes we are proposing to integrate into the Moodle core that will make the creation of a web service function to download files much simpler. Currently, it is necessary to perform the additional step of calling webservices/pluginfile.php to do this. The reason for this additional step is that the existing web services framework could only support binary encoding in XML which is very inefficient.
More details of our proposal are described at http://docs.moodle.org/dev/Talk:External_services_description#Integrate_file_download_into_the_Moodle_web_services_framework. The changes extend the web services framework to support a new return data type called external_file. This will allow a web service developer to create a single web service function that contains the business logic to get some files which are then zipped up and returned.
Our extension will allow developers to take advantage of the standard mechanisms (where they exist) that are defined by each web service protocol for downloading files. For instance, the SOAP protocol has SOAP with attachments http://www.w3.org/TR/SOAP-attachments which the new external_file data type would use. In the case of REST, which we have implemented first, we use the same mechanism as webservices/pluginfile.php uses, i.e the file download functions in lib/filelib.php.
The code changes and more discussion can be found at MDL-32336