If you remove the unwanted conditions from the expression, then it's easier to see how it works...
WHERE locationkey IN (
SELECT locationkey
FROM dbo.ClientTbl_DimStores
WHERE (CASE @StoreAttribute WHEN '%' THEN @StoreAttributeValue END) = @StoreAttributeValue)
Although the statement works, I think it's unlikely to give good performance.
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden