Not working as expected with this afternoon's download of 1.5.2.
Looking at the code in order.php class realised that $send_email is a parameter to the onAfterOrderUpdate and onAfterOrderCreate triggers - doh!! overlooked that spending too much time concentrating on my code within the triggers and overlooked what's at the top. So that would be a place where it can be controlled with custom code.
In the order.php class I would expect to see something like this - in pseudo-code.
$send_email = true if published else false;
$dispatcher->trigger( 'onAfterOrderCreate', array( & $order,&$send_email) );
$send_email = true if published else false;
if ($send_email) {
$send_email = @$order->history->history_notified;
}
$dispatcher->trigger( 'onAfterOrderUpdate', array( & $order,&$send_email) );
So the new publish/unpublish feature sets the default behaviour which custom trigger code is free to overwrite if desired.