Greetings!
Unfortunately I can't offer you a solution as I'm no expert on this either. But as you seem to be reading the data directly from another cdrom drive during burn time, I thought I'd contribute the following:
I'm not sure where exactly I read this but it was some tutorial on cdrecord. It strongly advised not to connect the two drives to the same ide channel as cdrecord doesn't support some function or another with the result that the ide bus can't handle the data stream anymore and you are left with a buffer underrun.
For example this would be wrong:
primary master: hdd1
primary slave: hdd2
secondary master: cdrom (source drive)
secondary slave: cdrw (writer)
Rather do this:
primary master: hdd1
primary slave: cdrom (source drive)
secondary master: hdd2
secondary slave: cdrw (writer)
Same goes for a hdd as a source, for example in the second example one would use hdd1 as a source for burning and not hdd2.
This is only general advice however, I cannot make much sense out of the fact that you can successfully copy a cdrom with xcdroast (which is only a frontend to cdrecord!) and not with cdrecord itself.
My last guess would be that xcdroast enables your burnproof feature (if you have any) and the command line call of cdrecord leaves it disabled.
I hope you'll find a solution!
Good luck!