.
As an expression of possibility, they are essentially interchangeable:
A: Where's John?
B: He may/might have gone shopping.
As reported speech, 'might' is past of 'may':
'I may go shopping.'
John said that he might go shopping.
As 3rd conditional, only 'might' (as the past form of 'may') works:
If I had been in Tokyo yesterday, I might have gone shopping.
.