I'm not sure why it's behaving this way... I suspect that it might have to do with the fact that your Months are text fields and not numeric/date values.
I'd recommend to use Date type of fields for Months. For example, if your main Date field is called MyDate, the best way to associate it with the corresponding month is this:
date( MonthStart(MyDate), 'MMM-YYYY') as MyMonth,
This way, you first associate the Date with the first day of the month, and then format the Month representation to your desired way (MMM-YYYY). Now you have a dual field that can be sorted properly (using Numeric Value) and it can participate in any objects where numeric/date values are expected.