That appears to work, but it's hard to say for sure. I can go ahead and do this, but it might be a good idea to modify the fancy date formatting libraries to accomodate a timezone, rather than "trick" them by setting the OS timezone. Just a thought.
Also, it appears that this just works, although I'm not sure if v8 will add any extra caching down the line:
1.9.3p194 :003 > cxt.eval('new Date()')
=> 2012-06-07 04:57:17 -0500
1.9.3p194 :004 > ENV['TZ'] = 'UTC'
=> "UTC"
1.9.3p194 :005 > cxt.eval('new Date()')
=> 2012-06-07 09:57:27 +0000
1.9.3p194 :006 > ENV['TZ'] = nil
=> nil
1.9.3p194 :007 > cxt.eval('new Date()')
=> 2012-06-07 04:57:38 -0500
1.9.3p194 :012 > ENV['TZ'] = 'Asia/Bahrain'
=> "Asia/Bahrain"
1.9.3p194 :013 > cxt.eval('new Date()')
=> 2012-06-07 12:58:48 +0300