I ran into something very similar, passing an interface reference paramter to a C++ UFUNCTION in a blueprint class that implements a C++ UINTERFACE from blueprint instead of from its C++ base class ends up with the TScriptInterface having a null InterfacePointer.
I then tried passing it as a UObject instead of an interface ref and casting it to the interface with Cast; this failed too. After trying it that way I found this via google:
The solution in the end using that was:
void AFooBasePlayerController::InteractWith(TScriptInterface<IFooInteractable> const & Interactable)
{
if (Interactable.GetObject() && Interactable.GetObject()->GetClass()->ImplementsInterface(UFooInteractable::StaticClass()))
{
if (IFooInteractable::Execute_IsCurrentlyInteractable(Interactable.GetObject()))
{
[...]
}
}
}