An explanation for this is probably that when you
window.opener.location.reload();
...the connection between parent and child is broken. That is why focus cannot be sent.
However, focus will not automatically drop to the parent window if you close the child window if you clicked on some other window since the last time you clicked on the parent window.
If you want to make sure focus goes back, put the focus() command in first, then reload. Even though the focus is sent, the JavaScript will (should) run.
Hope that's helpful.
--Dave