Apparently, there was too much luggage on the aircraft so the aircraft had to have more fuel. Then a passenger became aggressive and abusive to the crew, therefore being offloaded and met by police in JNB. If they landed in LHR there would a further hour delay for landing due to time slots, and then the crew would be out of hours, so had to be diverted to LGW so they could have a prompt landing. Hope this helps!