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)