Well we can expect abit more from ODBC, but definitely alot more from Teradata. Your best option to load data is to make a flat file and load it via FastLoad or MultiLoad or perhaps you can use TPT and DataDirect to accomplish that.
In SQL Server, if you are accessing Teradata as Linked-Server then I guess this is way too good what you are getting.
Apart of ODBC there are also other factors to look for, which includes network delay, network bandwidth, harddisk delay, ODBC data packet size, etc. And as ODBC is not a loading utility (and loading utilities dont use ODBC), so I suspect it must be firing either a separate INSERTs for each row, or INSERT...SELECT.