これらの条件を満たす場合、一時テーブルが強制的にディスク上に作成される場合があるようです。
この制限には明確な理由があり、それは MEMORY ストレージエンジンの特性によるものです。MySQL :: MySQL 5.6 リファレンスマニュアル :: 15.3 MEMORY ストレージエンジン
MEMORY テーブルは固定長の行ストレージフォーマットを使用します。VARCHAR などの可変長型は、固定長を使用して格納されます。
MEMORY テーブルは BLOB または TEXT カラムを含むことができません。tmp_table_size のチューニングとメモリ上に一時テーブルが作れないクエリ #MySQL - Qiita 2016
8.0.13以降
一部のクエリー条件では、インメモリー一時テーブルを使用できません。この場合、サーバーは代わりにディスク上のテーブルを使用します:
テーブル内の BLOB または TEXT カラムの存在 ただし、MySQL 8.0 のインメモリー内部一時テーブルのデフォルトのストレージエンジンである TempTable ストレージエンジンは、MySQL 8.0.13 の時点でバイナリラージオブジェクト型をサポートしています。 内部一時テーブルストレージエンジンを参照してください。
https://dev.mysql.com/doc/refman/8.0/ja/internal-temporary-tables.html