Using your code and data, I get:
>>> case_fields = ["El_Season"]
>>> max_field = ["COUNT_OccProb", "prob_code"]
>>> sql_orderby = "ORDER BY " + ", ".join("{} DESC".format(field) for field in case_fields + max_field)
>>>
>>> with arcpy.da.SearchCursor(r'D:\tmp\Data.gdb\statistics',
... "*",
... sql_clause = (None, sql_orderby)) as cur:
... for row in cur:
... print(row)
...
(14, u'IILEPK4060_y', 106, 1)
(15, u'IILEPK4060_y', 1, 2)
(12, u'ARADE01010_y', 77, 1)
(13, u'ARADE01010_y', 32, 2)
(10, u'AMAFF08100_y', 73, 1)
(11, u'AMAFF08100_y', 21, 2)
(9, u'AFCHA05030_y', 198, 2)
(8, u'ABPBX45040_b', 1327, 2)
(6, u'ABPBX03240_b', 562, 1)
(7, u'ABPBX03240_b', 96, 2)
(5, u'ABPBJ19010_b', 1327, 2)
(4, u'ABNKD06020_b', 692, 2)
(3, u'ABNKD06020_b', 692, 1)
(1, u'AAAAD01010_y', 89, 1)
(2, u'AAAAD01010_y', 30, 2)
>>>
What results do you get? The sorting in the printout above looks correct to me. There is only one case, OIDs 3 &4, where "EL_Season" and "COUNT_OccProb" are the same, and in this case the higher "prob_code" is first.