is_int() проверяет , является ли значение переменной integer, то есть от -30к с копейками до 30к с копейками ( насколько я помню ) , а is_numeric() проверяется значение переменной на число , или числовую строку , и само числовое значение не имеет значение , главное что оно числовое ( туда же включено и float значение с 'e' )