All five have unique applications and purposes, yet all 5 fit nicely within one program.
User Agent cloaking
It is good for taking care of specific agents. It delivers...
WAP, WML pages to cell phone users;
Active X to Internet Explorer users;
quality CSS to Mozilla and Opera users;
specialty content to user-agents (e.g. NoSmartTags, GoogleBot Noarchive); and,
a nice black screen to WebTV users.
There is no sense sending stuff with javascript (java-script or js), java, or flash if a user is unable to use it.
IP Address Cloaking.
It is good for taking care of demographic groups. It delivers...
language file generation for various countries;
advertising delivery based on geographic (geo-targeting) data;
pages built for broad-band (broadband) users;
low impact pages for overseas users;
user time-of-day determination and custom content based on geographic (geo-targeting data (news, sports weather..etc); and,
specifically targeted demographics for groups such as AOL, Mindspring, etc.
IP and Agent cloaking.
It is good for a combo of the above. It delivers...
custom content for AOL users using WAP phones; and,
ads based on geographic (geo-targeting) data and user-agent support.
The possibilities for targeting are almost endless. There are more ways to target content than IP addresses (IPs) and user-agents to serve.
Indexability. Just getting your site fully indexed can be a challenge in some environments (flash, shockwave).
Referrer-based cloaking.
This bases delivery on specific referral strings.
It is good for content generation, such as overriding frames (e.g. about.com, askjeeves, and the google image cache).
It prevents unwanted hot-linking (hotlinking) to graphics/images.
Session-based cloaking.
Sites using session-tracking (either from IP, or cookies), do incredible things with content. Session cloaking on dynamic sites is used to deliver custom content generated for a specific user.
Conclusion.
Cloaking is a gate-keeper serving your site, in it's best light. It protects your custom code from prying eyes.