Este não é um problema do Puppet, mas um problema de como você gerencia seus repositórios de pacotes.
Se você realmente precisa se ater a uma versão específica de um pacote, então você não deve confiar em nenhum segundo ou terceiro para continuar fornecendo para você. No mínimo, você precisa mantê-lo em um repositório controlado por você, como você está fazendo. E rolar seus próprios pacotes não pode ser "muito sobrecarga" se eles são tão importantes para você, então esse argumento não conta.
Você deve procurar espelhar os repositórios upstream (apt-mirror, rsync) e decidir quando expirar os pacotes. Dessa forma, você sempre tem as versões que precisa em mãos.
Em relação ao PostgreSQL, posso dizer que os pacotes Ubuntu e Debian podem ser atualizados com facilidade e segurança; não há necessidade de manter uma versão específica (antiga) do pacote por medo de quebrar alguma coisa. Apenas certifique-se de controlar a hora e o local das atualizações de pacote e as subsequentes reinicializações de serviço, mas isso não é necessário.