I would expect $r->print to accept a string of bytes just like every other print.
The posted code shows that printing to STDOUT in a cmdline script gives the same result for both strings
I followed up by saying you can instruct print to accept characters by telling it how to handle them. This is done on a per-handle basis, and that's what you did for STDOUT with
binmode STDOUT, ':utf8';
You need to do something equivalent with mod_perl's object.
the problem as I see it is that STDOUT under mod_perl2 lacks the utf8-awareness built through the rest of the perl I/O layer, with no way of enabling it.
Not knowing anything about the class except what you've told me, I agree. File a bug report.