Why people do this?
Because they are not there to play poker, per se. They are there to have a fun time, and a whole bunch of people all-in is fun. Furthermore, if you aren't there to play seriously, then why waste your time playing hard? Either you lose, and get to go on about your day, or you double (triple, whatever-ple) up, and you get to have fun playing a big stack. Basically some people just don't want to spend a long time losing. Either win big, or go home.
Do people regularly do this in real-life?
I have never seen it in a live tournament or in any cash game play. It happens in small-stake online tournaments frequently enough to piss me off ;), but less than 25% of the time, for sure.
What kind of hand will make all-in this situation a good bet?
If you are asking what kind of hand you need to just shove the first round or so, the answer is aces and maybe kings. No other hands. Why? Most of the time, people are going to fold, and you win a tiny pot that you probably would have won anyway, and the only hands likely to call you are monsters, and you lose your stack (most likely). Why expose yourself to more risk than necessary?
Second, think about why you bet. You bet to make stronger hands/draws fold, or weaker hands call. If you shove all in with anything reasonable, stronger hands are going to call you (they are too strong to fold), and weaker hands will fold to the huge bet. The exact opposite of what you really want.