Are there antonyms that don't being with -mal?
Yes, people (including Zamenhof) have created or do use (some) adjectives that can be seen as exact or approximate antonyms of other adjectives, and which aren't formed by prepending mal- to that other adjective.
In Esperanto, such words are sometimes called mal-mal-vortoj, which I find somewhat confusing, as mal-vorto could conceivably mean "antonym" and it'd seem that the opposite of an antonym could maybe be a synonym. However, in this expression, mal-vorto simply means vorto kiu komencas per mal-, so a mal-mal-vorto is a word that is an antonym of another one, but doesn't begin with mal-.
Some examples
According to the article / blog post Skalo de akceptiteco de mal-mal-vortoj by Markos Kramer, the most used mal-mal-vortoj in Tekstaro (an Esperanto literature corpus often used for analysis of the language) are, with their absolute number of occurences:
- stulta (≅ malsaĝa): 335
- amara (≅ maldolĉa): 146
- rara (≅ malofta): 142
- magra (≅ malgrasa, malabunda): 78
- olda (≅ maljuna): 71
- trista (≅ malgaja, malĝoja): 58
- povra (≅ kompatinda): 51
- dura (≅ malmola): 37
- frida (≅ malvarma): 30
- kurta (≅ mallonga): 30
(read the article for a more complete list)
In the article, the ratio between the mal-mal-vorto and its alternative mal-vorto(j) is use for another ranking, that tells us how popular the non-mal- antonym is in comparison to the synonymous antonyms built with mal-:
- amara / maldolĉa: 1,2586
- stulta / malsaĝa: 1,1242
- rara / malofta: 0,5035
- magra / (malgrasa + malabunda): 0,4815
- pigra / (maldiligenta+mallaborema): 0,4058
- dura / malmola: 0,1979
- povra / kompatinda: 0,1382
- trista / (malgaja + malĝoja): 0,0978
- lanta / malrapida: 0,0535
- olda / maljuna: 0,0444
What's the role of antonyms that don't being with -mal?
Some few of the mal-mal-vortoj are used regularly and accepted as common parts of the language. Others are more or less reserved for the following uses:
- poetic texts, e.g., song lyrics or poems
- convey a meaning that's slightly different from that of the corresponding mal-vorto(j)
Why don't more adjectives have commonly used mal-mal-vortaj antonyms?
This is an intended property of Esperanto. By its word-building system, its creator aimed to minimize the number of morphemes (word building blocks) one must learn to actively (speaking, writing) and passively (listening, reading) use the language. As many adjectives do have a clear and somewhat unambiguous antonym / opposite, the number of adjectives to be learned is almost halved by consistently building one member of each antonym pair with mal-. Take into account that some verbs and nouns also have sufficiently clear opposites, and the effect goes even beyond the number of adjectives.
Using mal-mal-vortoj instead of these would make the language harder to learn, due to a larger morpheme vocabulary, but not better to use, because the expressiveness and productivity of the vocabulary would stay the same.
In a pair of mutual antonyms, which should be the "base" word and which the mal-vorto?
It's not necessarily obvious to me why, say, "granda" is big and "malgranda" is small - or "kara" is expensive, but "malkara" is inexpensive/cheap (why not pick "cheap" as an adjective and then flip its meaning with "mal-", for example?)
It's sometimes said that Esperanto is based on logic and can be understood purely with logic. This is off course not really true, at least not completely. When one has an antonymous pair of meanings, and has to choose which one gets to be a base word with a proper root, and which one will be the derived one that gets the corresponding mal-vorto, the decision can (and in Esperanto not seldom does) seem somewhat arbitrary.
I myself sometimes trip over which of fermi and malfermi means "to close" and which "to open". And on a conceptual level, I'm somewhat annoyed that "left" and "right" aren't used symmetrically: The latter gets the proper root (dekstr·a) and the former usually "only" a mal-vorto (mal·dekstr·a). While the mal-mal-vorto liv·a exists, it's hardly ever used.
That being said, it's not like there's no rhyme and reason to most of those choices: Usually, the meaning that appears more fundamental gets the base word, and the other the derived one. Let's look at that criterium for the examples you gave:
big and small are both about size. When you list them in English, you most often do that in this order, rather than small and big, unless there's a specific reason (often for emphasis or contrast) to flip the order. Also, when you think about size, it it kinda synonymous with bigness. So quite clearly, big seems to be the more fundamental concept than small, which is rather the opposite of big.
cheap and expensive are both about price. The order argument doesn't really work here (I've listed cheap first and that doesn't seem strange or special at all), but if something is pricey, it's expensive, so maybe that one's the more fundamental direction on the price scale. Also, cheap can also be expressed as inexpensive, but I'm not aware of any "un-cheap"-like word construction for expensive.
It's worth noting that kara has other meanings (mostly valuable and dear/liked) that aren't related to price and that malkara doesn't seem to also express their antonyms. It's also wort noting, that for the price meaning, there are the commonly used kunmetaĵa synonyms multekosta (expensive) and malmultekosta (cheap, inexpensive) and the mal-mal-vorto ĉipa (cheap, inexpensive).
Off course, the notion of what is more fundamental in a pair of opposite meanings can be somewhat culture-dependant, but it seems to have turned out that actually, the sentiments of most cultures agree with most of Esperanto's choices w.r.t. mal- usage. There are also quite some clear antonym pairs, where mal- isn't customarly used for either member. They're probably also the pairs where there wouldn't be any widespread agreement over which member is the more fundamental one:
- tago & nokto
- mateno & vespero
- nord· & sud·
- okcident· & orient·
- (debatable) vir· & ·in·
- vintro & somero
- (debatable) printempo & aŭtuno