Parece ser bem isso, mesmo... O is compara os objetos do ponto de vista do Python olhando para a memória. Se eles tiverem o mesmo tipo, mesmo conteúdo etc. são iguais enquanto objetos. O ==, por sua vez, invoca o método de comparação especificado pelo objeto, o __equals_to__ (ou algo assim, sei lá).
Fórum