When re-fitting XGBoost on most important features only, their (relative) feature importances change I am using 60 obseravation*90features data (all continuous variables) and the response variable is also continuous. These 90 features are highly correlated and some of them might be redundant. 
I am using gain feature importance in python(xgb.feature_importances_), that sums up 1. I run xgboost 100 times and select features based on the rank of mean variable importance in 100 runs. 
Let's say I choose the top 8 features and then, again run xgboost with the same hyperparameters on these 8 features, surprisingly the most important feature (when we first run xgboost using all 90 features) becomes least important when we run xgboost using top 8 variables. 
Any feasible explanation for this?  
 A: The importance of correlated features shrinks in tree models. Intuitively, it is because two correlated features are somewhat equivalent in the information they bring, and therefore the tree can decide to split on any of the two. For this reason, two perfectly correlated features will split the total importance relative to the information they bring in two. 
When you removed the other 82 features, these were (as you also said) highly correlated. What is very likely is that the one feature that was standing out in the 90 variables model was NOT correlated to any of the others (hence the high relative importance). Once you reduce the number of correlated variables, the ones that you have selected gather all the importance that before they were "splitting" with the other correlated features, ending up with more total importance than the other single variable which was uncorrelated from the rest. 
I hope it makes sense. Try to look at the correlation matrix of the full variables, and hopefully you will see that that particular variable has less correlation dependencies than the other ones that ended up being more important than it.
