None. They both do the same thing, but one names a local that would be hidden otherwise.
If you're that nuts for shaving every tiny cost away, why not do:
Address Addr = new Address((from s in context.Addresses
where (s.u_address_id == new Guid(this.Id).ToString("B"))
select s.u_address_id).Single());
Not getting all the fields could have an impact from absolutely minute, through pretty miniscule to enough that it would almost matter.
Even better:
string add_id = new Guid(this.Id).ToString("B");
if(context.Addresses.Count(s => s.u_address_id == add_id) != 1)
throw new InvalidOperationException();
Address Addr = new Address(add_id);
(With some sources, .Where(s => s.u_address_id == add_id).Take(2).Count()
is better, with others not).
Or if you can be confident such a item exists in the source, you can just do:
Address Addr = new Address(new Guid(this.Id).ToString("B"));
None of which are massive, but they're all much greater than the concern with giving a temporary a name. I think they get increasingly clear as to what they are actually doing as we go, too. I consider the last, the most readable.