Cuenta más o menos pulsos depende de la velocidad de giro

surbyte:
No hace falta declarar una entrada como entrada para que luego trabaje como interrupción.

Entradas son entradas e interrupciones son las que dispone el Arduino en uso tal como dice @PeterKanTropus.

INT0 es pin 2
INT1 es pin 3.

Esta línea puede mejorarse aunque sea correcta, debes simplificar operaciones, porque toda matemática es lenta.

 centimetros = contador / 20 * 6.5;

6.5/20 = 0.325 entonces

 centimetros = contador * 0.325;

hará lo mismo de modo mas rápido.

Bueno, ahora que revisé todo tu código en su contexto me pregunto para que usas interrupciones? No creo que una rueda gire tan rápido como para no leer cambios.
Pero... debes probarlo, asi que te voy a sugerir un código que no usa interrupciones pero si mira los cambios en un pin y lo presenta en el LCD.

Prueba a ver, es el mismo pin okay?

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);

const byte ruedaPin = 3;
long contador = 0;
int centimetros = 0;
bool status, statusAnt = false;

void setup() {
  // pinMode(ledPin, OUTPUT);
  pinMode(ruedaPin, INPUT_PULLUP);
  lcd.begin();
  Serial.begin(9600);
}

void loop() {

status = digitalRead(ruedaPin):

if (status && !statusAnt) {
      contador++; 
      centimetros = contador 0.325;
      // lcd.clear();
      lcd.setCursor(5, 0);
      lcd.print (centimetros);
  }
  statusAnt = status;
}

Hola surbyte.
Pues uso las interrupciones porque las vi en algún proyecto que usaba ruedas dentadas para medir distancias, y di por hecho que tenia que ser así. pero probando tu código, va mil veces mejor!! sin ningún desfase. Voy a intentar entenderlo y si no te importa lo implementare a mi programa.

He calculado que mas o menos el sensor de óptico de la rueda le de a arduino unos 400 pulsos por segundo.

También simplificare las operaciones matemáticas todo lo que pueda a partir de ahora.

Muchas gracias por tu ayuda!!!