Esse "guarda na memória" seria a lista estática "List < Empresa > lista" que foi criada dentro da classe "Banco". Quando um atributo é "static" ele vale para todos os objetos daquela classe, então mesmo quando uma nova instancia de "Banco" é criada tudo o que estiver salvo dentro da lista "lista" também irá valer para esse objeto. Essa mesma lógica se repete para os usuários, a chave sequencial e para todas informações criadas dentro do bloco "static".
Quando inserimos uma nova empresa a partir da "formNovaEmpresa.jsp" e do "NovaEmpresaServlet.java", estamos adicionando um novo objeto do tipo "Empresa" dentro de uma lista "static" presente no objeto do tipo "Banco". As informações salvas dentro dessa lista "static" ficam salvas na memória e ao chamarmos a "ListaEmpresasServlet.java", ela chama os objetos que estão dentro dessa lista "static" e manda para a "listaEmpresas.jsp", que irá mostrar as empresas que foram adicionadas e suas informações.
Classe Banco:
public class Banco {
private static List<Empresa> lista = new ArrayList<>();
private static List<Usuario> listaUsuarios = new ArrayList<>(); // todos os objetos do tipo empresa ficam salvos aqui, tando os que foram adicionados a partir do bloco "static" quanto os foram adicionados pelo navegador
private static Integer chaveSequencial = 1;
...
Espero que agora tenha fico mais claro, se ainda estiver com dúvida fico a disposição :)