And I found a solution that makes sense. If I update the parameter in the database, it works fine. So ParameterRedef only seems to update the foreground system. Here ist the working code:
for prod_system in prod_systems:
for param_val in param1_vals:
system = dao.getForName(prod_system)[0]
solver = JuliaSolver()
m_cache = MatrixCache.createLazy(db)
calculator = SystemCalculator(m_cache, solver)
setup = CalculationSetup(CalculationType.UPSTREAM_ANALYSIS, system)
### Parameter für Berechnung festlegen
param_dao = ParameterDao(db)
param = param_dao.getForName('param1')[0]
param.value = param_val
param_dao.update(param)
### Die Wirkungsabschätzungsmethode auswählen
method_dao = ImpactMethodDao(db)
impactMethod = method_dao.getForName('My_Method')[0]
setup.impactMethod = Descriptors.toDescriptor(impactMethod)
result = calculator.calculateFull(setup)