There is little reason why you would not use ODBC. The reason for this is not performance, but the easiness of the interface. ODBC is certainly a lot more cumbersome than using SqlClient in .NET, but compared to OLE DB it is a breeze. Using OLE DB leads to very verbose code. There used to be the Consumer Templates which can simplify these, but I don't how current these are.
Disclaimer: I've never programmed against ODBC, but I've used OLE DB for an API. It was kind of fun, and since it is an API. all queries go through the same code, but repeating that for every query, no thank you.
When it comes to performance, I have no current information, but way back in 2005 I attended a session at PASS, where the Program Manager for SQL Native Client, which was a new thing with SQL 2005, said that they had been able to do some tuning in ODBC, but not in OLE DB. He also recommended ODBC for native programming from the usability perspective.