One hot encoding of a binary feature when using XGBoost I already asked this question is SO; however, I realized that this may be a better place for this type of question.
I am well aware that when using categorical features with tree based models such as random forest and gradient boosting there is no need to drop one level from N-level categorical features. For example, the following color feature with three levels can be made three binary features.
Color|| Color_R | Color_B | Color_G
____ ||_________|_________|________
 R   ||   1     |   0     |   0
 B   ||   0     |   1     |   0
 G   ||   0     |   0     |   1

However, what about binary feature (E.g., TRUE/FALSE, MALE/FEMALE)? Should it be kept as a single binary feature (Option I below) or should it also be one-hot encoded into two binary features (Option II below)
Option I
Gender || Gender  | 
____   ||_________|
M      ||   1     | 
F      ||   0     | 
M      ||   1     | 

Option II
Gender || Gender_M | Gender_F 
____   || _________|_________
M      ||    1     |   0     
F      ||    0     |   1     
M      ||    1     |   0  

 A: It's true that you're not missing information when you use only $k-1$ categories. In linear models, we are all familiar with the dummy variable trap and the relationship between a model with $k-1$ levels and an intercept and a model with $k$ levels and no intercept. However, you're using a tree-based model, so the mechanics of how recursive binary splits work are important!
In the case of a factor with 2 levels, e.g. "red" and "blue", it's obvious that using the $k-1$ 1hot method is equivalent to choosing the $k$ 1-hot method. This is because NOT blue implies red. In this case, there is no difference.
But  for $k>2$ categories, you'll need $k-1$ binary splits to isolate the the omitted level (the $k$th level). So if you have 3 levels, e.g. "red", "green", "blue", but you only include 1-hot features for "red" and "green", it will take 2 successive splits to isolate the "blue" samples. This is because if you split on "red", the children are nodes for red and NOT red = green OR blue. To isolate "blue" when the category "blue" is omitted from the coding scheme, you'll have to split again on "green" because then the children nodes of green OR blue will be blue and green.
As $k$ increases, this problem becomes more pronounced, as you'll require more splits. This may interact with your other hyperparameters in strange ways, because specifying a maximum tree  depth is a common strategy to avoid overfitting with boosted trees/xgboost.
If isolating category $k$ isn't important, then this effect may not matter at all for your problem. But if category $k$ is important, you'll tend to grow very deep trees to try and isolate it, either via the categorical variables or else by identifying latent interactions of other variables.
A: Go with your Option I - there is no need to do one-hot encoding when there are only two categories.  These two columns Gender_M and Gender_F carry the exact same information (since it's binary, at least in your example).
I think some frameworks need binary classes to be one-hot encoded, but not features.
A: I had same doubt on this matter. When you have K = 2 (just like in gender case) you will end up having 100% multicollinearity with other value anyway (GenderMale = GenderFemale in terms of collinearity) so it makes sense to drop one of them. Since tree models can handle multicollinearity, you do not necessarily have to drop when K > 2. However, when K = 2, even if tree models can well handle multicollinearity, you should still drop one of the values as it leads to perfect multicollinearity. This is how I see it.
A: Quoting from here:

Converting a binary variable into a one-hot encoded one is redundant
and may lead to troubles that are needless and unsolicited. Although
correlated features may not always worsen your model, yet they will
not always improve it either.

