Decision Trees do work with categorical data. It says that Decision Trees are "Able to handle both numerical and categorical data." You just have to convert them to integers. For example {'A', 'B', 'C'} should be converted to the set {1,2,3}.
You can read more about the specific algorithm implemented in sci kit learn Tree algorithms section on the same page. Sci kit learn uses an optimized version of the CART algorithm. This algorithm makes a binary tree using thresholds on attributes which create the largest information gain. I am not sure as to the positives and negatives of this algorithm vs an algorithm that does create rule sets, since I am not the most familiar with the CART algorithm, but perhaps that is a different question.
EDIT: although I think the answer I suggested is very common, for example shown here and is the standard technique in libraries like WEKA, there is another way to map categorical features to ints/floats suggested here. In this answer it is suggested to add a set of features the same size as the number of values that the categorical feature can take (i.e. if 'red', 'green', and 'blue') and map them to some binary encoding of these features. For example 'red' would go to (1,0,0) 'green' would go to (0,1,0) and 'blue' would go to (0,0,1).
Note that not all algorithms for decision tree require giving numerical input values. There are decision tree algorithms (like the id3) which do not need numerical input values and treat features as actual categories. It depends on the implementation. It seems that for ease of implementation sci-kit learn has decided to use CART which treats everything as numeric.