The parameter is a terminal expression that is just a specialised IExpression. It was created separately from Expression so that it could store the additional parameters of the field name, table name and parameter type. These are necessary so that the criteria manager component can return a valid SqlExpressionString when required.
The reason for storing this additional info in the expression manager and not parsing it every time a sql statement was required is partly down to performance and partly down to ease of use.