By having the Level as a value type, it connects the parameter value to the element id of the level, allowing actual data linking. Without inside knowledge of a project, it is dangerous to assume that a text parameter means anything in particular. It also doesn't avoid the issue of misspelling and inconsistent ways of referring to the level within the parameter.
And as I mentioned, text would not let you filter a schedule with "is above", "is at or above", "is below", "is at or below" conditions. For example, I can't use a text parameter to get elements that are associated with a level between "Level 2" and "Level 5".
It would be beneficial to associate the parameter Views, allowing the "Associated Level" to be set for 3D view, Renderings, Schedules and other views that don't typically list a level. It could then appear in a View list and be used to influence Sheet data based on the placed viewports.
I see the value also creating value types for Room and Space for the same reason, to associate items that don't normally have an association.