Prior to 1895, Adelaide ran at solar time, GMT +9:14. When time zones were introduced, they went for GMT +9:00, but changed to GMT +9:30 after only 4 years. This probably reflected the reality that more people in SA live east of Adelaide than west of it.
Meanwhile, Sydney only had to put the clocks back 5 minutes to move from solar time to GMT +10:00, while Melbourne had to move the clocks forward 20 minutes to get into the same time zone as Sydney. (Both changes happened in February, 1895.) If we're going to have half-hour time zones, Melbourne is in the wrong one; it should be in the same zone that Adelaide currently uses.
So, in summary, by solar time Melbourne should be 20 minutes behind Sydney's current time zone and Adelaide 46 minutes. As there is a substantial population living on the NSW–Victoria border, not putting Melbourne at UTC+9:30 makes some sense. The same isn't true of SA's borders with Victoria and NSW. And so, we ended up with the current compromise, adopted in the era when railways and telegraphs became dominant.