With a native DOM .click() the browser takes care of the bubbling; any handlers further up the DOM tree will have their jQuery handlers called when the browser bubbles to that element and fires the handlers. Any associated non-cancellable events caused by the click, such as focusin/focusout, focus/blur on the new/old elements, will also be propagated up the tree as a result.
With a jQuery .click() we manually bubble the event up the tree in Javascript. If no handler returns false or calls event.preventDefault, we call the native DOM .click() method as the final step. However, we trap and discard the browser's bubbling of the event since we have already done that and it would cause the handler to run twice. At the moment, triggering a jQuery .click() this way also discards the focus changing events because they are fired while the browser is inside its DOM click() method.
I'm not sure how much of this we can change in jQuery, given that we also allow non-native events that have to bubble, and the browsers don't handle that consistently. We might be able to change things with native events so that they match browser behavior (and of course we'd need to do so across all browsers or it's not worthwhile) but for now if you need to strictly follow browser behavior including the order of change/focus (for example you're faking user input for testing) you'd be better off using the Simulate plugin: