Como EL não tem suporte para adicionar Entity-Classes programaticamente, você pode fazer o seguinte:
Pesquisar seu Classpath com a API Reflections (ou API Google Reflections) para classes anotadas com @Entity. Coloque essas informações de classe em seu persistence.xml.
Todas as outras configurações de EL podem ser feitas programaticamente por meio de um mapa de propriedades (new HashMap <String, Object> ();) e uma pequena ajuda de PersistenceUnitProperties, que contém todas as chaves de propriedade disponíveis (nunca mais tenha um erro de digitação em suas chaves novamente 🙂