¿Por qué usar typeof para identificar una función?

¿Hay alguna razón importante para usar

typeof variable === 'function'

versu

!!variable.call

para detectar si una variable es una función?

Aparte del obvio que alguien puede crear un objeto como:

{ call: 1 }

El problema que tengo es que

typeof /regex/ === 'function'

devuelve cierto, pero

!!/regex/.call

devuelve falso

Respuestas a la pregunta(6)

Su respuesta a la pregunta