What is the difference between the Workbench and Workflow modules?
Workbench gives you an intuitive and friendly user interface to control content (nodes)transitions on a previously defined states on a role based access control means that every transition to the node from a state to a state for the role authorized to perform that transition, with the ability to create new transitions and states.

You won't get that feature unless you enabled the workbench moderation module.

Workbench access module allows you set sections, editors, roles (defined using a menu items or taxonomy terms) to work on the description above based upon the permission given for the role to work on workbench functionality which gives you a generic out of the box role based access control to previously define workflow to manage content publishing process.

Workbench media provides integration between media and the Workbench suite. It simplifies the pages content administrators need to visit in order to add media which makes workbench files 
module useless and becomes depricated.

Workflow seems to be more powerful and provides you with one form to create and define workflows and manage states, transitions, assign roles, set labels for transitions and how states will be listed and logged read that awesome article  

Besides have integration with many helpful modules may be used in your project in the future like og, rules, views and search_api due to the dependency on drupal entity system allows to set workflows defined to other entity types not limited to nodes.

Actions on each transition could be tied and notification created for users in concern like group members and admins or high level managers.

At the end each of the two modules have very good functionality that deserves showing respect to maintainers, Workbench focus on content closely to E-magazines and online news portals or forums, Workflow pay attention on the process thinking of workflows as business rules required and may be helpful in ERP, CRM and E-commerce like systems some how.   

Finally close to scope of that question I found a very simple module provides ability to add custom publishing states with integration to rules and views, specify defined roles to transition nodes between states.

I hope that review helps you determine what is the best module for your project.