Variable Jump Height with a rolling ball, fluctuating with different FPS

I want to have a variable jump height when jumping (the longer the jump button is held, the higher you jump). It generally works fine, but when I set the Max FPS to different amounts, the jump height changes (lower FPS = higher jump height).

JumpState is 0 if the player is able to jump, 1 while jumping is accelerated in the air and 2 when falling.
JumpTimer is the amount how long the button has been pressed, if it reaches JumpTimerMax, JumpState is set to 2. JumpAdd is the amount that gets added to the Z velocity each tick (multiplied by DeltaSeconds)

Relevant code:

void ATestingBallBall::JumpPressed()
{
	if (JumpState == 0)
	{
		Ball->SetPhysicsLinearVelocity(Ball->GetComponentVelocity() + FVector(0,0,JumpStart));
		JumpState = 1;
		JumpTimer = 0;
	}
}

void ATestingBallBall::JumpReleased()
{
	JumpState = 2;
}

void ATestingBallBall::Tick(float DeltaSeconds)
{
	if (JumpState == 1)
	{
		Ball->SetPhysicsLinearVelocity(Ball->GetComponentVelocity() + FVector(0, 0, JumpAdd*DeltaSeconds));
		JumpTimer += DeltaSeconds;
		if (JumpTimer >= JumpTimerMax)
		{
			JumpState = 2;
		}
	}
}

Basically by using FVector(0, 0, JumpAdd*DeltaSeconds) you apply an acceleration of length JumpAdd every Tick call. This is like applying an impulse of the same strength each Tick call. So my guess would be to use JumpAdd*DeltaSeconds*DeltaSeconds instead which makes the impulse linear proportional to DeltaSeconds.

(Please notice that Euler intergration underlies my answer, and it does not provide correct physic simulation)

Unfortunately, this just causes the problem to be even worse.

I wonder if the physics function to add jump velocity is already taking deltaTime into account. What happens if you leave DeltaTime out of the formula?