Is this definitely the case?
When I was experimenting with interfaces not long ago, it seemed there were some limitations, in that Cast<> would only work if the object was of a blueprint derived from a C++ class which itself implemented the interface. If the interface was only implemented at the blueprint level (ie. the parent C++ class of the blueprint didn’t implement the interface), Cast<> would return a null pointer.
There was a workaround for calling interface methods but it was very nasty, and did not actually allow getting an interface pointer to the object.
Found the article: A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums
It’s a bit outdated, but as far as I could tell, this was still an issue in 4.6 at least.