It is the same. A Nullable<bool> is a struct and the language specification states:
The default value of a struct is the value produced by setting all
fields to their default value (§15.4.5).
Since a Nullable<T> has these two fields:
private bool hasValue; // default: false
internal T value; // default value of T, with bool=false
So yes, using default(bool?) has the same effect as using (bool?)null, because (bool?)null is also a Nullable<bool> with hasValue=false(same as using new Nullable<bool>()).
Why you can assign null at all to a Nullable<T> which is a struct, so a value type? Well, that is compiler magic which is not visible in the source.
(bool?) nullanddefault(bool?)work from C# 2 onwards,(bool?) defaultneeds C# 7.1. Not likely to be an issue in practice, of course.