OK, I think I figured out what is going on AND the solution. The problem is that Multistore renders the XMLPackaged within an auto-generated <form> tag named "aspnetForm". So when you create a form in your package you will have nested forms (your form nested into "aspnetForm" form) that is a problem in HTML.
The result is when you click YOUR submit button it will perform the action property of the "aspnetForm" form and not yours. The reason why the page reloads itself is because the action of the "aspnetForm" form is the package name (eg. mypackage.aspx).
To workaround this I came with a 'hack' that consists in use a small JS code to rewrite the action property of the "aspnetForm" form. Everything you have to do is to replace the action property value (the name of the package) by the name of the script that should process your form using the setAttribute method. This way:
<?xml version="1.0" standalone="yes" ?>
<package version="2.1" displayname="Load Form EAF" debug="false" includeentityhelper="true">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:aspdnsf="http://www.aspdotnetstorefront.com">
<xsl:output method="html" omit-xml-declaration="yes" />
var fo = document.getElementById("aspnetForm");
<!-- FORM BEGIN -->
<input type="text" name="name" /><br/>
<input type="submit" value="Submit form" onclick="return HackForm();" />
<!-- FORM END -->
<xsl:call-template name="myform" />
Notice that I didn't use the <form></form> tags around my own form because it's irrelevant – you still CAN use it if you want but it won't make any difference. Anyway, when you click the submit button it will actually submit the "aspnetForm" form sending everything that is nested into it (including your own form). It works!