Надежна ли функция is_array?
На примере PHP5.6.14
ext/standard/type.c PHP_FUNCTION(is_array) вызывает php_is_type (функция определена там же, чуть выше)
Та проверяет на равенство Z_TYPE_PP(arg).
Z_TYPE_PP, соответственно, макрос из Zend/zend_operators.h#define Z_TYPE(zval)		(zval).type
#define Z_TYPE_P(zval_p)	Z_TYPE(*zval_p)
#define Z_TYPE_PP(zval_pp)	Z_TYPE(**zval_pp)
Как видим, прямое обращение к полю type базовой для zend'а структуры zval. Ну а уж оно врать не может, это или IS_ARRAY и is_array даст true или что-то другое и результатом будет false.
вполне