Oh yes, in many cases the punishment should fit the crime so that it becomes more of a lesson. However, I feel the random element can make the punishment more 'interesting' for several reasons.
1) It can be a help for a Dom who maybe feels they are pushing one type of punishment too much so that it loses its impact and/or they feel they are lacking imaginative ideas. In this case you can use random selection occasionally for punishment to vary things a little.
2) If you have a contracted set of transgressions with a conconimant list of punishments (i.e. not obeying a direct order from Master - 20 strokes with the tawse) then some subs can start to 'play the odds' a little and transgress because they know they can take the punishment or because they enjoy the punishment assigned. However, if the punishment is random (even if only occasionally random) then they do not know in advance what the punishment will be until they select it. The not knowing adds to the trepidation and therefore makes them less likely to break the rules.
e.g. If a sub breaks the 'disobeying a direct order' rule and knows that she will only get 20 strokes with the tawse then she may be more likely to break it because the punishment is known. It gets to the point where it becomes 'Ah, its only 20 strokes. I can handle that.' However, if the punishment could be any implement for up to 100 strokes or any other punishment (cum restriction, position, long term bondage etc) then they cannot guarantee that they will get a punishment that they can endure.
3) I think the selection of the punishment by the sub aspect of this is an interesting tool. It puts responsibility in the hands of the sub.
However, I do beleive that this tool does not need to be used all the time. I think a combination of contracted punishments (it says in the contract you have to have x punishment for this), Master whim (however, I feel that it deserves more than that so I am adding this...) and randomness (forget the contract, pick something out of the box) is the best option to keep a sub guessing.