In short, why use something like http://stackoverflow.com/badges/6/supporter instead of something ‘simpler’ (and subjectively, at that) like http://stackoverflow.com/badges/6/.
Even on my own site I’ve just been using /post/6/ to reference posts (by IDs, even though I still store a slug.) Instead of /post/6/small-rant-on-urls, and in some cases, they can get even more absurd, much more so than is really necessary.
Because you can potentially end up with duplicates if you’re not careful. I imagine stack overflow added the ID because there was a high potential for duplicates given the volume of posts created.
Other systems may choose not to use the ID in the URL – for example, a blogging system probably would not need to.
It’s a better idea if you have user generated content that results in a new URL created to include a post ID. If the only way new URL’s can be created is through administrator type access, you can probably do without it as long as you check for duplicates.