Working on Drupal core means that any change you contribute - even the most trivial tweak - is likely to go through multiple levels of review before being applied. Most contributors to core can expect delays of weeks, months, in some cases even years before a patch is accepted--if indeed it ever is accepted. And even if a new feature you contribute to core goes in, you won't get to actually use it for months or years--the typical lag time until a new major version is ready for production use.
So it's no wonder many Drupal developers choose to work instead on contributed modules.
In contrib, if you're developing your own module, you've got a pretty free hand to do whatever you want. You can get a lot of functionality out there relatively quickly. And you won't have anyone breathing down your neck while you code. Want a new feature? Easy: code it up, press that metaphorical "commit" button, and you're set.
So end of story? Put in the occasional minor patch to core, but otherwise stick to the easy world of contrib?
Not quite. Because it turns out that the ease of contrib can also be its greatest pitfall.