Salve, John!
Sobre esse bug, eu no inicio experimentei mais. O que fiz pra corrigir foi reduzir a largura da raquete. Imagino que seja algum "erro" em como o código calcula a posição da bolinha e a interação com os demais atores. Meu projeto ainda tem alguns desses detalhes, mas de certa forma aproveitei pra usar esses "erros" a meu favor e tornar mais dinâmico.
Sobre o adversario errar, tem uma observação lá no video que talvez tenha deixado passar mesmo. Na verdade, pra evitar deixar invencível, o Guilherme utilizou a variável Posição da Y Bolinha "menos" 50.
Eu particularmente não aderi à solução porque vi que sempre que a bolinha vinha em posição ascendente a raquete adversária errava, já que ela estava sempre na posição da bolinha - 50 (ou seja, abaixo da posição Y). Assim, o que fiz foi deixar na verdade a raquete deslizar após 0.15 segundos após a posição da bolinha. Isso torna ela rapida o suficiente pra acertar a maioria, tanto com a bola subindo, quanto descendo, mas o suficiente pra errar as vezes. Ela não desliza de forma tão suave, mas por enquanto é o que dá.
Depois dá uma olhada e diz o que achou: https://scratch.mit.edu/projects/833259367
Abraço