You don't need to parse the entries into an array if you don't want to. It all depends on how you want to handle and what form the parameter is in. If it is something that depends on spaces, it would be harder, but if it is number that are comma delimited you could remove all spaces in the string, add commas to the front and end and then check using instr if the parameter matches the record.
OR you could get the data via a stored proc and build a function to parse delimited strings (this is actually the approach I took as the client wanted to enter dept codes like this: 1-5, 10-26). The function would return a table that the stored proc can search through, join on, etc.
My experience with multiple selects is a list on one side and selecting them into a list on the other. You might be able to add your own entries as DBlank suggests, but the risk, of course, is a mistyped entry.
I agree that a long list is cumbersome to use, which is why my company moved away from using the Crystal parameter screen, because it is cumbersome and not very flexible.
Hope some of this helps