Best practice depends on the community in question.
I once was part of a big community centered around a game. We kind of were a small community with strict rules. You do not harm others or you are banned right away. This worked out fine for the time being, however, one time the community racked up and suddenly the community exploded. We saw that we needed to change how punishment works and fortunately, we had some very skilled and experienced developers at our disposal.
We first thought if the current system works out in such a rapid moving community. The target group was relatively young, around 10 to 16 years old. As we all know are users in this group tend to be very emotional and because of that the rate of misconduct skyrocketed. So we needed to change something.
Before proceeding to the then developed system, I want to summarise the old system first. It was divided in a temporary ban and a permanent ban, just like yours.
In case, you broke our rules, we will either ban you temporarily or permanently depending on the misconduct at hand. We will decide then what is appropriate.
That's it. There was nothing more. This resulted in a lot of work as everyone asked: "Am I banned temporarily or permanently? If the first, how long?" This became annoying quite fast so we developed a new system.
The first thing was to abolish the term "temporary ban". In the end, a ban is nothing else than a legal prohibition, meaning that the term implies that something is a lasting effect. You usually don't prohibit something for a while just to allow it then again. So instead of using this term we added the term "exclusion". The new system now had two ways of punishing users who misbehaved. One was to be temporarily excluded from the community, the other was to be banned, basically meaning that's it.
In our community, we adopted a few rules we all ask to follow. These rules are necessary to ensure that everyone has the most fun possible.
In case that someone broke the rules, the person in question will always be excluded from our community for some time to think about what they have done. If something happens again, they will receive an additional exclusion to think again. If a person repeatedly breaks our rules (more often than twice), we will permanently ban the person in question. A ban is not reversible.
With that, we had a way to clearly make a difference between being kicked out temporarily and permanently. After introducing this, we already saw a sharp recline in requests over bans. The next thing to tackle was the duration of an exclusion.
There we somehow needed an automatic way to take care of things. Our developers added some nice features which could exclude everyone on the spot if one either abused our chat or cheated. This being done, the next question needed to be resolved. How long should an exclusion be? This was a tough one.
First, we gave everyone the same amount of days and showed it to them -then we analyzed how many of these who misbehaved misbehaved again. The number was somewhat high so we tried out something else: We excluded everyone a random amount of days, completely unrelated to the case in question and didn't show any information about the duration. This resulted in a decline of repeating behaviour so we thought about optimizing it.
We added a range to it and narrowed it down quite a bit. We found an amount of at least seven days and a maximum of nine days very appropriate so that users had the time to think about their misconduct. So we excluded everyone randomly either seven, or eight or nine days. This worked pretty well but also came with a lot of requests, so we devised yet another solution to this with our developers.
An exclusion is a time span between seven to nine days depending on the severity of your case. However, you are allowed to apply for an early ending of your exclusion. Please do so using our official tools. Asking staff privately about anything related to your exclusion will result in an automatic ban. Please only use our official tools.
(Yes, we lied to our users about the severity as it actually was randomly assigned. However, the range was not big, and as said before the misconduct rate skyrocketed so we needed a way to at least seem it to be handled personally.)
Our developers devised a way to connect all automatic exclusions with the tools so everyone could see their offence. Of course, there were still manual exclusions, these ones could just be added manually. Then someone could apply for an early ending of their exclusion by just writing that he understood our rules and apologizing.
This became a nuisance quite soon as well so our amazing developers implemented a way to scan every application for key words to sort applications in two different kind of queues. These were then read manually and a well written application resulted in an early ending of the exclusion.
Doing so, we could manage the rate of offenders. In the beginning we had to deal with around 200 temporary bans and permanent bans a day - however, the staff was a very small team. That was not manageable at all. After going through all this iterations we could reduce this to 10 exclusions a day and only one ban every two days! This was a reduction of 90%!
Of course, it must be said that we were very lucky to have skilled and quite experienced developers at our hands as well as community managers who spent the time to analyze all the data so we had a big opportunity. In the end, we could conclude that handling it that way and referring to punishments either as exclusion or ban improved our situation dramatically.
If you don't have the technical ability to implement such a solution, I would do something I did when I also had no technical resources. I went with the aforementioned system but made the rules even stricter.
In our community, we adopted a few rules we all ask to follow. These rules are necessary to ensure that everyone has the most fun possible.
In case that someone broke the rules, the person in question will always be excluded from our community for some time to think about what they have done. If something happens again, they will receive an additional exclusion to think again. If a person repeatedly breaks our rules (more often than twice), we will permanently ban the person in question. A ban is not reversible.
We do NOT talk about an exclusion while it is still active. If you contact the staff about exclusion while you are still excluded, this will result in an automatically applied ban. If you wish to discuss matters with us, please do so after your exclusion time is up. We are more than happy to resolve matters and / or reset your exclusion counter if there is evidence that no apparent misconduct happened.
This was one of the strictest rules I ever applied in a community it was not as successful as the solution mentioned above but it also dramastically decreased messages about an exclusion. Usually we also showed an excluded user our rules again and marked the section with the automatically applied ban red. We had to resolve a lot of matters afterwards but quite often the logs of the chat showed everything needed so that matters were resolved fast.
As the very first sentence mentioned it depends on the community. I moderated a lot of communities with young(-er) target groups so that a "fear", as you called it, was indeed very helpful. Tough rules also helped. However, in a community like SE something like this would be inappropriate.
This is because SE very different. The target groups are varied way more and very often it's professionals (or professionals-to-be) who participate who also read the rules. (Contradictory to younger persons, who usually just skip the part of reading rules.) In exchange for doing so, they somewhat expect you to tell them how long they have been banned.
In the very end, it boils down how you can run a happy community in the long run. In my experience, younger communities need stricter rules and the staff to be more like a nanny to establish a lasting happiness. This also results in the method described above.
A community where respect is a common good and the target group is older, the rules do not need to be too strict as everyone expects everyone else to behave friendly. So even the message of banning is expected to be friendly and clear.