Why is rpart not splitting this data even when there is gain in gini?
It seems that rpart is actually using accuracy rather than gini in the cost complexity pruning, see e.g. https://stats.stackexchange.com/a/223211/232706
Since your split doesn't improve the misclassification rate, rpart doesn't make it even with cp=0.  Setting cp=-1, the split is performed.