Interesting.This is worth a bugzilla issue, IMHO. In fact, if you try the other way (i.e.: you provide an implementation of func in class C), you get the opposite error, that you are overriding a final function (B.func).
Submitted as issue 16306 https://issues.dlang.org/show_bug.cgi?id=16306