Wow, @sshleifer - that’s an amazing very balanced list of pros and cons! You made it hard to choose sides. To add to your list FSMT 1 could also re-use about half of Bart’s components as is.
@beltagy’s comment is very insightful - I agree with a lot of what you said, thank you!
Here are just a few ideas from me:
1. unfolding tool
In the most recent discussion, that I’m aware of, where we tried to introduce some refactoring 2, it was mentioned that a tool has been in works (or being discussed?) that will be able to unfold the code for those who want it. If that is possible my vote would go there.
Such tool would permit for a much easier development and maintenance, while allowing those who want to read a single file with all the code in it by unfolding the abstractions.
2. generic component library
If such tool is not possible, I’d vote for creating more generic components, so there will be a set of Encoders and Decoders, create as many as needed and then plug those in. One doesn’t go and read the code for torch.nn.Linear most of the time, you quickly learn what it does. Perhaps the same can be done for more complex components and just create a variety of them so that they could be easily plugged in. i.e. if BartEncoder is a thing (and it is), then how is it different from torch.nn.Linear if there are many who want to use it.
So what I’m proposing is not to copy BartEncoder, but to put it into transformers_encoders.py with all the other encoders and thus creating the encoders library, so even modeling_bart.py imports it as a generic component.

Maintaining equivalent test coverage after copy paste would require adding 111 tests!

Not so if you copy all the tests  Which btw, is also a problem to add to your list - as the test suite run-time will be much much longer - and that’s a problem.
p.s. I’m not sure that your voting tool is not game-able - once I voted it asked me if I wanted to vote again. But in any case I’m not sure how valid the results would be, how do we know which groups of people were reached by this post and whether the voting process doesn’t get gamed by having an unbalanced sample.