Setting a job JAR with JobConf.setJar(String) and Job.setJar(String) assumes that the JAR is local to the client submitting the job, thus it triggers copying the JAR to HDFS and injecting it to the distributed cached.
AFAIK, this is the only way to use uber JARs (JARs with JARs inside) in MR jobs.
For jobs launched by Oozie, all JARs are already in HDFS. In order for Oozie to suport uber JARs (
OOZIE-654) there should be a way for specifying as JAR a JAR that is already in HDFS.