How can I transfer photos to my Android Jelly Bean device while preserving the original timestamp?
You can't, this is a current permission problem (bugreport here) of Android 4.0+'s /sdcard folder if it's not using FAT32 (but FUSE).

Reason: There's a transition away from FAT32 to unified user storage for both apps and media data (using ext4) on a single file system.


  We got tired of seeing OEMs include many GB of internal storage for music, while users were still running out of space for apps and data. This approach lets us merge everything on one volume, which is way better.
  
  -- Dan Morrill, Android engineer at Google


The old FAT32 properties are emulated using a FUSE layer to be compatible with existing apps. Also: /data/ and /sdcard on Google devices starting with the Nexus 7 use a single partition only (/data/media represents the "sdcard" content and is exposed using the FUSE layer to apps).

Here's CyanogenMod's implementation of the FUSE driver if you're interested in seeing the source. Looks like setting timestamp attributes is implemented, though.

EDIT: It only works with root.

Exact reason: All files are owned by root.sdcard_rw (see here).

A caller withouth uid=0 can't call the utimensat() syscall, it fails in the VFS layer already (EPERM) for timestamps other than current:


  
  the caller's effective user ID must match the owner of the file; or
  the caller must have appropriate privileges.  
  
  
  To make any change other than setting both timestamps to the current
  time (i.e., times is not NULL, and both tv_nsec fields are not
  UTIME_NOW and both tv_nsec fields are not UTIME_OMIT), either condition
  2 or 3 above must apply.