If you use the -o option, then all log messages are sent to stdout. I've implemented it that way for backwards compatibility, but especially in combination with --quiet and -o -, it won't work so well, as you can see. I'll fix it somehow, please follow the bugreport you also opened.
Other than that, all bets are off when you use the minus sign to redirect two streams to standard output. I think it should work, giving you an interlaced output file, but I haven't explicitly tested this case and it's not really supported. A solution is to use two FIFOs. This should work (not tested):
mkfifo trimmed.1.fastq
mkfifo trimmed.2.fastq
cutadapt -a ${P1} -A ${P2} -o trimmed.1.fastq -p trimmed.2.fastq R1.fastq.gz R2.fastq.gz > report.log &
bwa mem ref.fasta trimmed.1.fastq trimmed.2.fastq
I'll also add explicit support for interlaced output and then this will be easier.
If you don't want to use grep, you can use sed or perl to filter the output ;) e.g.
What's wrong with an intermediate filtering step?
"What's wrong with an intermediate filtering step ?" I don't know all the possible messages that could be sent to stdout.