A principal diferença entre controlar uma variável com o useState e criar e atribuir normalmente uma let é que, ao utilizar o useState, estamos informando ao React que aquela variável é responsável por controlar o estado do componente. Isso significa que, sempre que essa variável sofrer uma alteração, o React irá re-renderizar o componente, atualizando o DOM de acordo com o novo valor.
Por outro lado, se criarmos uma variável utilizando let ou var e simplesmente atribuirmos um valor a ela, sem indicar ao React que aquele valor é parte do estado do componente, as alterações na variável não serão refletidas no DOM, já que o React não estará ciente dessas alterações.