It’s the same as not being able to take the address of 5 even though you can take the address of an int after giving it the value 5. It doesn’t matter that there’s no alternative value for a nullptr_t to have.
Values don’t have addresses; objects do.
A temporary object is generated when you pass such a value to a const & parameter, or otherwise bind a value to a const reference, such as by static_cast< T const & >( … ) or declaring a named reference T const & foo = …;. The address you’re seeing is that of the temporary.