Um script geralmente é um pedaço de código que é executado fora do mecanismo principal. Geralmente está contido em arquivos de texto onde você quiser mantê-los. Em seguida, é geralmente carregado pelo mecanismo, analisado e executado em tempo de execução.
O que geralmente acontece é que, independentemente da linguagem usada (Lua, Angelscript, por exemplo), essa linguagem geralmente possui alguns recursos que permitem ao programador de mecanismos expor funções de mecanismo ou até mesmo classes inteiras à instância do "mecanismo de script" que está sendo executado no momento. .
Por exemplo (exemplo totalmente estúpido, mas apenas para esclarecer), seu código de jogo pode ter uma função pública que gera zumbis em algum lugar:
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
A linguagem de script que você usa agora permite expor essa função ao analisador de scripts em execução. Isso significa efetivamente que você pode abrir um arquivo de texto, escrever "SpawnZombie (200,300,1337)" e, uma vez que seu mecanismo execute o código, um Zombie irá aparecer nesse local.
As outras respostas já listam alguns bons exemplos de como isso geralmente é usado, mas deixam de fora um ponto que considero muito importante:
Esses tipos de scripts facilitam a depuração ou o teste da jogabilidade durante o tempo de execução.
Digamos que você queira descobrir a maneira perfeita de colocar um zumbi no mapa, para que ele tenha o efeito máximo de susto no jogador, uma vez que o descubra. Sem o suporte a scripts, você teria que sair do aplicativo, alterar alguns números mágicos no código, recompilar e testá-lo.
Com o suporte a scripts (desde que você já tenha algum método para inserir texto durante o tempo de execução, por exemplo, um console de depuração), basta digitar "SpawnZombie (333,444,555)" e ver como fica.
Da mesma maneira, é possível gerar armas, veículos, carregar mapas diferentes, alterar os valores de algumas coisas no jogo, etc., instakill inimigos porque você não quer perder tempo chegando à parte que precisa ser testado etc.
Isso economizará toneladas de vezes em jogos mais complexos.