Can an EXISTS clause be improved when the condition is checked for the same value multiple times?
Exists and IN will give the same query plan because they are both "LEFT SEMI JOINs" internally. I prefer EXISTS generally because of consistency. NOT EXISTS is safer then NOT IN.

Caching does not apply and don't think about it. This is a set based operation and the SQL Server optimiser will work out the best way: It may spool the subquery or it may not. Note that a left semi join is typically very efficient. Don't overthink it.

Finally, a PK scan indicates a missing index on UserBlogRoles

Observation: use the the schema, Luke. dbo.UserBlogRoles for example