On linux file systems (at least on ext2 and ext3) to be able to change file attributes you have to be either owner of the file or superuser (root). Phing's io subsystem assumes that to change file modification time it has to have write permissions to the file, which is not required in this case.
The problematic area (File::setLastModified()) already marked with FIXME marker. What I propose is to remove the check completely and rely on touch() results (FileSystem::setLastModifiedTime() throws exception if it failed to touch the file).
Additionally, the exception message used by FileSystem::setLastModifiedTime() is misleading: it says:
throw new Exception("Could not create directory due to: $php_errormsg");
, but it should be something along the lines of:
throw new Exception("Could not touch the file ' . $path . ' due to: $php_errormsg");