Disclaimer: I started the git-tf project and although the project is now in very capable hands without me as a frequent contributor, you should absolutely consider my opinions on this to be strongly biased.  (And, assuming you're on Windows, perhaps unexpected.)
There are two fundamental differences between the two tools:
- git-tfswas built for Windows users and written on top of the .NET TFS SDK.  The TFS SDK will not run under Mono, so this makes- git-tfsunsuitable for cross-platform use.
 
- git-tfwas built for cross-platform users and written on top of the Java TFS SDK.  Thus, it will run anywhere that's supported by the Java TFS SDK (Windows, Mac, Linux, AIX, HP-UX, Solaris, etc...)- git-tfwas explicitly created to allow Xcode users to access TFS.
 
On Windows, of course, you can use either.  I'm not going to necessarily say one is better than the other.  But I will say:
- My biggest complaint about - git-tfsis that it won't work on Mac OS.  If there was a way to make- git-tfscross-platform, then- git-tfalmost certainly wouldn't exist.
 
- git-tfsis faster in some cases than- git-tf.  Performance was not our priority in the first few revisions, correctness was.
 
- Because - git-tfhas a wide platform support matrix, this means that its functionality is necessarily constrained.  For example, there is no UI.- git-tfs, on the other hand, has a- checkintoolcommand that will open the normal TFS Checkin dialog.  This can be exceptionally helpful in visualizing your changes.  (If I recall, you can open up a proper visual diff from there, etc.)
 
- git-tfworks by populating the git repository directly, downloading TFS objects directly into the git object database.- git-tfsworks by creating a TFS working folder mapping in a hidden folder, then populating the git repository from that.  There's a disk penalty here, so if you have superginormous repositories, you might feel this.
 
- git-tfscan try to map your TFS branches to your git branches.  A lot of people will see this as a positive for- git-tfs, though I don't:  git's branching model (at the repository level) and TFS's branching model (represented as folders in the repository) are so radically different as to cause problems in anything but the most simplistic workflows.  But your mileage may vary.
 
- git-tfsis actively developed by a community.- git-tfhas not had the community adoption.
 
I don't want to make it sound like I'm saying git-tf is bad.  It's not.  I think it's actually pretty good.  But it may not be your best choice.
Update: git-tf has reached end-of-life.  It is no longer maintained or supported by Microsoft.  We recommend git-tfs if you want a bidirectional TFS <-> git solution.