I'd say that due to the input (JS), they also have a fairly limited set of IR constructs they really need to support. The B3 IR looks very simple for this reason. IOW, they figured out that for realistic code they don't need the full, heavy weight of LLVM and can just implement some simple basics.