Redundant Use of Time.deltaTime?

In the example for CharacterController.Move in the scripting reference, it seems to me to have a redundant application of Time.deltaTime to the y component of moveDirection on the second to last line of code below. It works just fine, but can someone explain why it has to be applied twice?

var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
private var moveDirection : Vector3 = Vector3.zero;
function Update() {
	var controller : CharacterController = GetComponent(CharacterController);
	if (controller.isGrounded) {
		// We are grounded, so recalculate
		// move direction directly from axes
		moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
		                        Input.GetAxis("Vertical"));
		moveDirection = transform.TransformDirection(moveDirection);
		moveDirection *= speed;
		
		if (Input.GetButton ("Jump")) {
			moveDirection.y = jumpSpeed;
		}
	}
	// Apply gravity
	moveDirection.y -= gravity * Time.deltaTime;
	
	// Move the controller
	controller.Move(moveDirection * Time.deltaTime);
}

moveDirection represents velocity, a change in position over time.

gravity represents acceleration, a change in velocity over time.

Both velocity and position will change over time, thus the multiplication by deltaTime. Acceleration and velocity are related concepts, but knowing the difference between them is crucial to understanding kinematic physics.

If you happen to know calculus:

Let p = position
Let t = time
Let velocity v = dp/dt
Let acceleration a = dv/dt

Taking a few shortcuts for the sake of brevity, you can suppose the velocity answers the question “How fast are we moving?” and acceleration answers the question “How is our speed changing?”

Line 20: calculates and applies a change in velocity since last frame.

Line 24: calculates and applies a change in position since last frame.