Actually, no they are not the same.  If you include the "?", it will match as FEW characters as possible.  Here's an example:
var string = 'abcdefg';
alert(string.match(/[A-Za-z]+/));
 
 
var string = 'abcdefg';
alert(string.match(/[A-Za-z]+?/));
 
 
Now, the "?" can still match multiple characters, but only if it has too, like this:
var string = 'abcdefg>';
alert(string.match(/[A-Za-z]+>/));
 
 
Now it gets a little confusing.  Check out this example that does NOT include the "?" (the dot character matches everything but a space or new line character):
var string = '<abcdefg>sldkfjsldkj>';
alert(string.match(/<.+>/));
 
 
You can see that it matches everything.  However, with the "?", it will match only up to the first ">".
var string = '<abcdefg>sldkfjsldkj>';
alert(string.match(/<.+?>/));
 
 
Now it's time for a practical example of why we would need the "?" symbol.  Suppose I want to match everything between <strong> HTML tags:
var string = '<strong>I\'m strong<\/strong> I\'m not strong <strong> I am again.<\/strong>';
alert(string.match(/<strong>[\s\S]+<\/strong>/));
 
 
As you can see, that matched EVERYTHING between the first and last <strong> tags.  To match ONLY one, use the life-saving "?" symbol again:
var string = '<strong>I\'m strong<\/strong> I\'m not strong <strong> I am again.<\/strong>';
alert(string.match(/<strong>[\s\S]+?<\/strong>/));