If you have polluted or heavily fragmented file system, dd will be faster. Generally I will use it.
There is one drawback: on an event of read error your array will break. For software raid it is quite easily solvable, but you need more spare space that one 1Tb drive. And to read faulty drives I prefer ddrescue, it will do the work much faster than dd with conv=noerror,notrunc,sync.
So to minimize risks of data loss in your case, I would dump faulty drive into file by ddrescue, then assemble raid from file and other drive (this is possible with loop device) and then copy/dd from that assembled raid. Or, if you have third 500gb, you could dd faulty drive to third drive, then assemble raid from it and your working drive from former pair.
One more note: for critical data (which I would ever want to rescue) I will never use raid0. It has only use as fast scratchpad, which could be easily thrown away without several losses.