Just to throw a little oil on the fire, Java behaves exactly as the OP expected C# to behave. An abstract class there is under no obligation to implement all functions of all interfaces it claims to implement. If it doesn't, then further derived classes have to.
C# is merely making this requirement explicit.