Quaternion multiplication

I was studying this script from an example project and after comparing it to another tutorial, did some research on Quaternion multiplication. Now I am by no means a math whiz (only learning what I need to when necessary), But what I found interesting was this line right here

direction.Normalize ();

I was reading this post Multiply quaternion by vector3... how is it done (mathematically)? - Unity Answers and from what I could gather, Multiplying a quaternion by a vector3 or (Vector2) gives the same rotation. Because I thought the Horizontal and Vertical Input both have a magnitude of 1 anyways is using Vector3.normalize necessary?

using UnityEngine;
using System.Collections;

/// <summary>
/// Utilities to convert Joystiq input to worldspace ( based in main camera) 
/// and to convert worldspace to Speed and Direction
/// </summary>
public class JoystickToWorld
{	
	public static Vector3 ConvertJoystickToWorldSpace ()
	{		
			Vector3 direction;	        
			float horizontal = Input.GetAxis ("Horizontal");
			float vertical = Input.GetAxis ("Vertical");		
			Vector3 stickDirection = new Vector3 (horizontal, 0, vertical);                        		        
			direction = Camera.main.transform.rotation * stickDirection; // Converts joystick input in Worldspace coordinates //Quaterntion multiplication
			direction.y = 0; // Kill Z
			//direction.Normalize ();	<-------------

			return direction;
	}

	public static void ComputeSpeedDirection (Transform root, ref float speed, ref float direction)
	{
			Vector3 worldDirection = ConvertJoystickToWorldSpace ();

			speed = Mathf.Clamp (worldDirection.magnitude, 0, 1);
			if (speed > 0.01f) { // dead zone
					Vector3 axis = Vector3.Cross (root.forward, worldDirection);
					direction = Vector3.Angle (root.forward, worldDirection) / 180.0f * (axis.y < 0 ? -1 : 1);
			} else {
					direction = 0.0f; 
			}
	}    
}

is using Vector3.normalize necessary?

Yes. Take a look at these three possible vectors from your code above: (1,0,0), (0,0,1), and (1,0,1). The magnitude of the first two is 1.0, but the magnitude of the last is sqrt(2). Without the Normalize(), your character would move faster when going in a diagonal direction. But you are right in thinking that the Quaternon multiplication does not change the magnitude of the vector.