Lo que pasa es que al usar ? como placeholder, PDO lo escapa y tu consulta queda así:
Código SQL:
Ver originalINSERT INTO una_tabla (campo) VALUES ('NOW()')
Tienes que entender que la idea de usar prepared statements, no es solamente la de escapar los carácteres, si no más bien lo que hace internamente PDO es mandar el query a tu BDD, compilar el query y luego esperar los valores de entrada.
Es por eso que no se pueden poner funciones como NOW() ya que no hay optimización, en ese caso ponlo directamente en tu query:
Código SQL:
Ver originalINSERT INTO TABLE (campo) VALUES (NOW())
La idea de usar prepared statements es de usarlos cuando necesites enviar variables de entrada o salida y tener la mayor optimización posible.
Saludos.