Retirei do código original o (input.value = "";) porque achei que o retorno da string vazia poderia ter dado erro. Mas o problema persiste.
A cada novo teste no input o único número que traz resultado correto é o 2 (como demonstrado dentro do array, o primeiro número possível), já todos os demais retornam com erro.
Revisei de acordo com o vídeo e não encontro discrepâncias. Preciso de olhos de outras pessoas aqui pra me ajudar.
    <script>
        var segredos = [2, 4, 6, 8];
        var input = document.querySelector("input");
        input.focus();
        function verifica() {
            var achou = false;
            var posicao = 0
            for ( posicao ; posicao < segredos.length ; posicao++) {
                if ( input.value == segredos[posicao] ) {
                    alert("Você acertou!");
                    achou = true;
                    break;
                } 
                if (achou == false) {
                    alert("Você errou");
                    break;
                }                
            }
        }
        var button = document.querySelector("button");
        button.onclick = verifica;
    </script>