lljk, you are absouletly right to be sceptical of techiques to try and 'stop' him from crying, as they would be supressing his emotions.
I would say, that your son, feels very comfortable and safe to express his feelings, which is why he cries often, it's not a bad sign, just a sign that he feels loved, and safe to do this. And that you are right, he's a very happy boy, nothing wrong with expressing feelings to the contrary from time to time.
It's a shame that we live in society where crying is not seen as socially acceptable, where people don't understand the healing mechanism of crying, and how it helps children to restore their emotional equilibrium
Did you know that tears have stress hormones in like cortisol and adrenalin, that help to relieve stress, so crying is a great way to release emotional tension. If he cries when he falls over, he may be expressing some emotions too, as like you've noticed he may not be physically hurt. The emotions maybe to do with something happening in the present, or just a build up of bagagge, that we all get from the day to day things that upset and stress us out.
I totatlly understand the need to protect him from kids that might bully or tease him for this. What I'd suggest is that if he cries about something that happens at home, to give him your full attention, stay close to him, and offer love and support. It can be our tendency to try and distract children from crying, to try and cheer them up, but if you just stay and listen, he might cry for longer but this means he can get all of his feelings out. Getting feelings out at home might mean that he cries less in public because he's feeling less emotionally burdened.
I would say that you've done a great job of parenting to have a son at age 12 who still isn't ashamed to express himself. I remember when i was at school there was only one boy in my class who could do this.
the hand in hand website, has lots of ideas, about how to help children have a healthy relationship with their emotions.