Olá Rafael,
A razão de ser pseudoaleatórios vem do método interno utilizado para gerar os valores "aleatórios", resumindo o resultado não é totalmente aleatório/randômico porque o algorítimo tem que partir de um ponto de início, como por exemplo alguns que utilizam a hora do sistema e outros dados como base para gerar o valor aleatório, assim conhecendo quais são esses valores base é possível prever qual será o valor gerado (mesmo que seja algo difícil de ser feito).
Já o seed é uma forma de controlar o valor base utilizado para gerar o valor aleatório, como é utilizado um cálculo matemático as mesmas entradas vão sempre gerar os mesmos resultados.
Recomendo também pesquisar além da documentação do python nesse caso, o assunto de pseudoaleatório é algo geral e não específico do python. Lembrando que essa explicação acima é bem simplificada.
Espero ter ajudado, qualquer dúvida é só falar!