Ragionandoci qualche minuto in più ho trovato un modo alternativo per ottenere la stessa cosa senza usare un attributo extra.

mantenendo quindi il codice html iniziale, lo snippet seguente riesce a leggere il valore dell'attributo su IE


codice:
$(document).ready(function() {
    $('form').each(function() {		
        var f = $(this),
	    b = f.find('button[value]');
        
        if (b.length > 0) {
	    var action = $('<input type="hidden" />').attr({
		name		: '_form_action',
		value		: ''
	    });
	    action.appendTo(f);
	    b.each(function() {
		$(this).bind('click.setDataButtonValue', function() {
  		    var value = (!!this.outerHTML)
		        ? this.outerHTML.replace(/^.+?\bvalue\s*=\s*(?:['"])(\w+).*$/, 
			    function(tag, valueattr) {
				return valueattr;
			    }) : this.value;
  		    action.val(value);
		})
	    })
	}
    })
})


edit: aggiornamenti a questo snippet
http://pastie.org/1200542