Esto se relaciona con la longitud de la cláusula IN, y lo que a veces se denomina BUG en MySQL.
MySQL parece tener un umbral bajo para las cláusulas IN, cuando cambiará a un ESCANEO DE TABLA/ÍNDICE en lugar de recopilar varias particiones (una por elemento IN) y fusionarlas.
Con un INNER JOIN, casi siempre se ve obligado a usar una fila por fila directa en la colección JOIN, por lo que a veces es más rápido
Consulte estas páginas del manual de MySQL
Podría estar equivocado ya que parece implicar que IN (constant value list)
siempre debe usar una búsqueda binaria en cada elemento...