One of the really nice things that Drupal 7 added for administrative users is the machine name field. Instead of trying to generate a unique name or figuring out which characters are randomly allowed it just does it for you. Keeps the progrmamers happy with unique key names in the database and doesn't make you feel like you're trying to create a bank password.
Drupal 6 does not handle non-local files well. That means if you want to use something like Amazon's S3 file service you are pretty much out of luck. Media Mover got around this by overriding some templates but the implementation did not work well for extensibility and left most use cases in the dark. Ultimately the problem with Drupal 6 is that core and contributed modules leave system level file functions in templates with no alter functions. Not having file load or file alter functions makes it almost impossible to override things without rewriting these templates. This is really not good but since Drupal 7 mostly solves this problem we can probably forgive ourselves.
Admittedly I don't know Wordpress very well, so you are welcome to take this with a grain of salt. I wanted a slideshow plugin that could use all existing media plus media that a user uploaded to their blog post landing pages. I did not want to create tags for slide shows etc. I did not want the user to have to deal with gallery vs. upload vs. library vs. stashing images in some other random place.The idea was to be as dead simple but to change the user process as little as possible.
Enter the jQuery. There are lots of great jQuery plugins to do slide shows. I used the jQuery Cycle Plugin. Markup is straight forward- just put a bunch of images into a div and use .cycle(). My approach was to grab all the images in a post, hide them, and add them into the jQuery Cycle div. Not much to it. I used a custom field to enable the slide show if the user wanted it and then they could just add as many images to their post as they liked.