Esto es así porque Python asigna la misma dirección de memoria a las variables, cuando los valores están dentro de este rango (ver referencia 1), y el operador "is" no compara el contenido, sino la dirección de memoria, que es más eficiente.
Es decir, Python asigna el mismo id de memoria a todas las variables cuyo valor sea igual a 1, y asignará otro id de memoria para todas las variables cuyo valor sea igual a 2, y así hará lo mismo para los valores desde -5 hasta 256. Esto lo podemos comprobar si creamos las variablaes var1=1 y var2=1, y luego imprimimos los ids usando id(var1) y id(var2).
Por tal razón siempre será mas eficiente, en terminos de tiempo de ejecucion, usar el operador is, cuando los valores esten dentro del rango descrito.