The other day I posted about minimalism, and noted there was a difference between a feature you need and a feature that just gets used because you can't imagine life without it.
A lot of the extremely minimal blog engines out there are designed to do one thing: take some text, render it using a template, and export it somewhere under some name. The rest is handled by shell scripting, the file system, the system's own user permissions, and so on. I like the idea of building directly on top of those things rather than recreating them in some form, but I also know that there are some cases where you don't have a choice.
Take user permissions, for instance. I built a user-permission system into MTL as a way to distinguish a writer from an editor from a publisher. System-level granularities like that are hard to expose to the end user through a web server that's designed to deal with the world at large. In other words, these aren't features I could expect to reproduce on a commodity web host, because many of the ways to support them on the OS level aren't really exposed to the end user. (Most Web hosting accounts don't let you create new user accounts, for instance.)
This is a feature you actually need, in my opinion -- something that has to be recreated because there's little or no elegant way to make use of what's already there in the context I created this app for.
On the other hand, there's many features I don't want to just thrown in because they seem like a cool idea. Those I'll most likely spin off as plugins and make available in some form, unless they're so normative that I can't help but put them in at the system level.
The hardest part about judging what belongs in core and not is when you only have your own use case to stem from. I suspect my personal use cases are something of an outlier for some features, but I am attempting to abstract out from that and see what the best underlying functionality would be for as many use cases as possible.