I think you would get the same result with a regular field. If the value is a scalar value (e.g. string, number) the result of a Javascript expression, there's no data context to work on.
This wil also "fail":
<xp:inputHidden id="inputHidden1" value="#{javascript:'hallo'}"
/>
Using ExpressionLanguage, you might get a rendered field, bit there's little to work with, as the field isn't bound to a data context.
If you bind it to a scoped variable, or a document field, you will get an input[type=hidden].
E.g.
<xp:inputHidden id="inputHidden1" value="#{viewScope.hiddenField}"
/>
<xp:inputHidden id="inputHidden1" value="#{document.first_name}"
/>