Sorry to hear that performance wasn't meeting your expectations within your setup. There are a few things you mentioned though that I think need to be addressed:
Let's start with the bolded part. What "should be" the right speed for these operations? I'm trying to figure out what your actual expectations are here for performance on average. You've mentioned that you've been able to attain speeds on average of 40MB/s to the array (that is on par with the average), but not what you are expecting speeds to be. What's important to note is you'll never saturate your 1gbps link writing directly to the array. Only the cache pool can do that.
Ok was this just a temporary slow down and then it picked back up? What was the average write speed during this transfer? Copies can ebb and flow a bit depending on the setup, so that's not entirely unusual.
If he is copying data directly to the array, the only possible way he can get near 1gbps performance is if he has reconstruct-write turned on. Without that setting, it is impossible to sustain a 1gbps network write speed for gobs and gobs of data. The penalty for parity calculations on dedicated disks is too great for that. Expected write performance to the array can vary based on hardware, but most modern setups with ideal configurations can attain between 40-60 MB/s to the array directly using the standard read/modify/write method.
Of course you'll find some posts from users talking about performance issues. That's probably the most common topic you'll find in ANY forum for a server solution like ours (bet the FreeNAS forums are loaded with this too). The simple truth is that the overwhelming majority of our users are getting expected performance and its only outliers like yourself that have these kinds of problems.
If you're in a situation where you're able to break the array configuration for testing purposes, here's what I would do to narrow down the root cause of the issue:
1) Reset your array configuration (from the Tools > New Config page). This will reset all drive assignments back to null.
2) Add one parity and two data disks to the array that are attached to a standard HBA storage controller (no USB/addon controllers)
3) Test write operation performance to the disks.
If your not able to attain 30-60 MB/s to the array with that setup, I'd be shocked. Next we'd have to test a direct wired connection from your server to another machine to rule out a network-specific issue. If you do get good speeds with this test, then you can slowly begin to add drives back to the system and retest until you discover a problem. That's the best way to narrow down issues like these.
Oh, and its also worth mentioning that mixing an array of USB-attached storage devices and SATA-attached storage devices could also be the cause of some of your issues.