Hay una segunda ventaja de un archivo clave, aparte de simular la autenticación de dos factores (2FA). Aunque su revisión de su pregunta sugiere que la respuesta de dos factores es lo que está buscando en su respuesta.
Otra razón para no derivar la clave de cifrado directamente de la Contraseña maestra es permitir que la clave se cree al azar en lugar de derivarse directamente de la contraseña maestra. Si creamos la clave con un CSPRNG y luego la ciframos con una Clave de cifrado de clave (KEK), podemos asegurarnos de que la clave maestra tenga toda la fuerza de su tamaño de bit. Es decir, una clave de 128 bits realmente será de 128 bits, incluso si una persona elige una contraseña maestra deficiente.
Aunque esto no es necesario para las claves simétricas (como se usa en los administradores de contraseñas), es absolutamente vital cuando se busca en sistemas de clave pública. En esos casos, la clave privada no puede ser nada, y por lo tanto no puede ser realmente una función de una contraseña y algo de sal. Por eso, para cosas como PGP o SSH, las claves son generadas por el software y luego se cifran con un KEK derivado de la contraseña.
Por supuesto, la derivación de KEK de la contraseña maestra aún debe ser "extendida" con una función de derivación de clave como PBKDF2 o scrypt.
Dos factores, pero no la autenticación
Nota: La razón por la que dije " simular autenticación de dos factores" es porque en realidad no hay autenticación en estos casos. En cambio, hay descifrado. Para muchos propósitos, la distinción no importa, pero hay casos cruciales donde la distinción entre una contraseña de autenticación (o token) de un token de cifrado es enorme.
En el caso de algo como KeePass, que no se basa en la autenticación (no estás probando quién eres para un servicio que luego te libera cosas en caso de éxito), debes llevar tu archivo clave a cada computadora o dispositivo que Necesito usar tus datos en. Por lo tanto, ponerlo en un dispositivo USB puede no funcionar si también desea descifrar sus datos en un teléfono. Es muy posible que haya formas de hacer esto con KeePass, pero dada mi comprensión (posiblemente defectuosa) de la arquitectura, presentaría algunas dificultades que deberían superarse.