Technical background (RichFaces developers can easy skip it):
<a4j:param> performs setting of its value into an expression specified in "assignTo" attribute. As this component is set as Action listener for ActionSource parent - org.richfaces.component.AbstractParameter.processAction(ActionEvent) is called. This method directly retrieves request parameter with this parameter's name/clientId:
String requestValue = context.getExternalContext().getRequestParameterMap().get(getName());
and then, if converter's not found, sets it as a value of an expression, specified in "assignTo":
When our expression value has reifiable type, for which JSF (or app developer) has registered a converter (for instance - Boolean) - all's peachy keen. But when developer uses, e.g., Map - expression's type (got in updateBinding.getType(ELContext)) is Object, and we're starting to receive strings in Map, which is probably parameterized with anything. Also this situation applies to "non-standard" reference types (user-declared JavaBean, for instance).
I.e. <a4j:param> tag handler designed to accept "converter" attribute, which can appropriately convert value, passed from client.
a4j:param VDL Doc has no mention of it, and value/assignTo attributes type specified as "java.lang.Object". a4j.taglib.xml has no mention of it, so developers have no chance to discover it, e.g., through the content assist, Rich Component Reference has only two sentences about it, which are very easy to miss.
Also, RichFaces Showcase contains no example, which uses "converter" attribute.