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