It does seem odd. The MSDN spec states that it will return either true or false, but still there must be a reason for the Nullable.
I would absolutely agree with you, that assuming an implementation underneath is bad practise. I would code as per the interface, so in this case I think checking the HasValue is the correct way to go.
How does Re-sharper know? I'm afraid I can't answer that. It's not something I use, they may have hard-coded it.
This may be of interest to you: When does Microsoft.Win32.OpenFileDialog.ShowDialog() return null?
It seems the reason there is the possbility of null is because that's the result before the user has closed the dialog.