Turns out that I had a few issues - the first one being that my headers weren't actually being sent from my header method at all in mod_perl mode. However once that was fixed I found the following solution:
1) header takes a hashref of _correctly_ named headers i.e. instead of -type and -cookie it needs Content-Type and Set-Cookie and bake() isn't needed at all i.e.
$self->cgi->header(
{
'Content-Type' => ( $args{type} || 'text/xml' ),
'Set-Cookie' => $self->cookie,
}
);
Once that was changed my original calls to cgi->cookie didn't need any changes for mod_perl mode.