This MSDN page defined 'protected internal' as (emphasis from original):
The protected internal accessibility level means protected OR internal, not protected AND internal. In other words, a protected internal member can be accessed from any class in the same assembly, including derived classes. To limit accessibility to only derived classes in the same assembly, declare the class itself internal, and declare its members as protected.
So in other words, types from outside the current assembly that derive from Base
would have access to Base(IFoo foo)
but they wouldn't have access to IFoo, since it is internal. Thus the error.