I may be mistaken, but in my opinion I think using your first opcion mighte better for performance because in option 2 your are not just evaluating with set analysis but also concatenating, perhaps is better to use an "if" rather than using option 2., but thats just my guess.
Definitely the Set Analysis expression will perform better, despite the CONCAT function.
In the first expression, not only the IF function is really heavy, but QlikView will have to build a Cartesian Join between your "Fact" table and the "Date Island" table (multiplying all possible values from both tables) in order to calculate an expression like this.
If you could avoid the Date Island and link the calendar by date, that would be even better. If you can't (usually because of the multiple date fields in the app), then use Set Analysis only for better performance.
Keep in mind that the dollar expansion will only be performed once in the set expression, and not on each row. So the expected result from the expansion is on the total data set, which might not always be what you are looking for, eventhough with your data island it will not make a difference.
Since it it only expanded once, there should be no major performance gain to use a variable instead.