As said, the first approach (with -j/-k) should be used if you plan to use only very few rules: i.e. you can start hashcat a couple of times (one after the other in a sequence, or loop if you prefer) to use -a 1 together with the single rules, this should be very fast.
On the other hand, you only should use pipes whenever you can provide hashcat with a lot of rules, otherwise you risk to feed it with way too little work (of course this depends on the tool on the other side of the pipe - and the hash type -, well, combinator.bin is quite fast, but hashcat is way faster, especially with NTLM)... so a lot of rules are needed to get the workload up again to about ~100%!
On the other hand, you only should use pipes whenever you can provide hashcat with a lot of rules, otherwise you risk to feed it with way too little work (of course this depends on the tool on the other side of the pipe - and the hash type -, well, combinator.bin is quite fast, but hashcat is way faster, especially with NTLM)... so a lot of rules are needed to get the workload up again to about ~100%!