I'm sure there's a smarter way to do this, but I needed a list of filenames that differed between two directories to generate an archive of just the new files (but not just the diffs). I decided to filter the output of diff -qr as so:
diff -rq dir1 dir2 \ | sed 's@Only in \(.*\): \(.*\)$@\1/\2@' \ | sed 's@Files.*and \(.*\) differ@\1@'
This results in a straight-up list of files with proper paths from the current directory suitable for passing via xargs to tar or zip (or whatever). YMMV.