It would be helpful to have a extra argument in before_widget
$params['before_widget'] = sprintf($params['before_widget'], $id, $classname_, $widgetnth);
where $widgetnth is the position of the widget in the sidebar, i.e. whether its the first widget, second widget etc. This can be used in generating class definitions using which a theme developer can write widget independent, position dependent css.
'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s widget%3$s"><div class="widget-inside">'
here widget%3s will generate class names like widget1, widget2 etc.
This can be useful in various scenarios. One use case is
2 widgets are stacked horizontally, and I want to set the width of the left widget as x and that of the right widget as y. There's no way to accomplish that without using hardcoded widget classes in the css.