Para responder sua última pergunta primeiro, "sim", infelizmente é normal receber números como strings. Como diz o manual citado por Pascal, o mysqlnd (PHP 5.3) retornará tipos de dados nativos de instruções preparadas, desde que você desative a emulação de instrução preparada do PDO.
new PDO($dsn, $user, $pass, array(
PDO::ATTR_EMULATE_PREPARES => false
))
PDO::ATTR_STRINGIFY_FETCHES não está relacionado ao MySQL.
Se você olhar pelo lado positivo, é uma boa prática usar declarações preparadas de qualquer maneira, então...;)