Personally I'd go with the former. With the latter, say you're in this situation where you have a bunch of derived classes:
class DerivedA : Implementation, IBar, IFoo { ... }
class DerivedB : Implementation, IBar, IFoo { ... }
class DerivedC : Implementation, IBar, IFoo { ... }
class DerivedD : Implementation, IBar, IFoo { ... }
And then your requirements for Implementation
change so that it now needs to implement another interface such as IBaz
(which it can do without having to affect any of the derived classes as long as it provides a non-abstract implementation) then you have two options:
Leave all the derived class definitions without an explicit declaration of the new interface information, in which case the class definition is now incorrect according to the standard, and potentially misleading if people expect the standard to always be followed.
Go and find all derived classes, and all their derived classes, and fix up the declarations on them. This takes time, is somewhat error prone and hard to do completely, and turns your single file change into a multi-file check-in.
Neither of these options is attractive, so I'd go with the option that doesn't put you in either situation. Just declare the most derived interface.