Open3
SQL Server 対応のドライバー回りの整理

pymssql
Python SQL ドライバーでは TDS プロトコルが使用されます。
これは SQL Server と Azure SQL Database で既定で有効になっています。
pyodbc が azuread の認証が利用できることを明記されているのに対して、
pymssql に関しては何も記載が無いので、
恐らく azuread の認証はできない。

pyodbc
pyodbc はいくつかのドライバーをサポートしている。
FreeTDSの併用はMicrosoftの公式サポート外ですが、pyodbcと「ODBC Driver xx for SQL Server」の併用は公式サポートされています。
参考
公式に azure との認証について書かれている
pyodbc だけでの接続方法
pyodbc と sqlalchemy
pyodbc connect を使って接続できた
動的認証トークンの生成
pyodbc.connect エンジンを取得した後、接続が要求されるたびに資格情報を送信する必要があります。これを行う1つの方法は、方言の接続呼び出しにクレデンシャルトークンを追加するイベントリスナーをエンジンに設定することです。これについては、「動的認証トークンの生成」でより一般的に説明されています。特にSQLServerの場合、これはMicrosoftによって記述されたデータ構造を持つODBC接続属性として渡されます。
プールしているコネクションの1つがタイムアウトしたら、再接続関数を読んでくれるという話だと思うのでパフォーマンスを損なわずに済みそう。(検証の必要あり)
プールもチェックする必要あり -> プールをfalseにしないでねという話だった。

sqlalchemy
DBAPI レイヤーで pyodbc, pymssql などをサポートしている