I think your problem is that LOGIN is a character variable, hence lacking quotes in the WHERE statement. When you add the external quotes in the %LET statement, the &userlist is not resolved, because simple quotes (') BLOCKS the macro resolution. Instead of adding them in the "SEPARATED BY" part, try this : combination of LEFT, TRIM (to remove trailing blanks) and QUOTE (adds quotes) functions in the SELECT clause, and only SEPARATED BY commas.
proc sql noprint;
into :userlist separated by ","
where UserID in (&userlist);