I consider it a feature if try_files and if can really check whether a file exists or not (instead of accessible). I have cooked a patch [1] that implements this functionality. Please review, comments are welcome.
Note: this patch changes behaviour. Previously, files which were not accessible were simply skipped. After applying this patch, files which exist, but are not accessible are not skipped. Maybe an option can be added to try_files and if to toggle this behavior?
Regards,
Peter
[1]: http://lekensteyn.nl/files/0001-Do-not-require-read-permissions-for-try_files-if.patch