in reply to Difference between File Handles and File Descriptors in function parameters.
One downside I can think of here is, if you accept a passed-in filehandle, and use it directly, then your method will be altering the file position of the caller's handle. Your method will also be subject to the current position and any settings on the caller's filehandle, so "printRestOfFile()" might be a more accurate name than "printfile()" for your sub as shown.
By accepting a descriptor, you would then make your own handle, with whatever settings that are appropriate for your method, only affecting your method, not the caller. This becomes much more of a concern when you're abstracting something, rather than just creating a worker sub for a structured script. Do no harm to your caller and all that.