The file system of the disk matters, for example writing to NTFS is known to be slow. Ext3 or 4 are faster, if changing the file system is an option. Anyway, mounting with the noatime option should improve the performance. noatime is helps with the SD-card performance too.
SFTP is cpu-heavy due to the encrypted transfer. NFS or samba are lighter. You could run 'top' on the pi while reading from or writing to the disk, to find out if the CPU usage is an issue, and which program/subsystem is the bottleneck.
I did a quick test, with SFTP from a usb hard drive with NTFS on it.
Writing: 1.9 MB/s ssh and sftp took 45% of the cpu time, mount.ntfs took 40%.
Reading: 3.0 MB/s, ssh and sftp took 80% ot the cpu time.
A thread about ntfs performance: