It would be nice to know when its appropriate to use these. An unconditional jump has no pipeline penalty and doesn't require speculative execution. These alternative jumps save a single byte per if statement (making code size a tiny bit smaller, and slightly reducing pressure on the I-cache).
Is there a risk of introducing a false dependency? I think the answer is no, because if the following code depends on a flag value or the exact contents of %rax then it's probably incorrect.
Maybe modern processors wouldn't like seeing the same instruction bytes decoding to two different micro-ops? That might trigger some horrible slow fallback path.