Pour autant que je sache, on ne peut pas instancier une classe abstraite
C'est là que se trouve votre erreur. Bien sûr, vous pouvez instancier une classe abstraite.
abstract class Animal {}
class Giraffe : Animal {}
...
Animal animal = new Giraffe();
Il y a un exemple d'animal juste là. Vous instanciez une classe abstraite en créant une classe concrète dérivée de celle-ci, et en l'instanciant. Rappelez-vous, une instance d'une classe concrète dérivée est également une instance de sa classe de base abstraite. Une instance de Girafe est également une instance d'Animal, même si Animal est abstrait.
Étant donné que vous pouvez instancier une classe abstraite, elle doit avoir un constructeur comme n'importe quelle autre classe, pour s'assurer que ses invariants sont respectés.
Maintenant, un statique est une classe que vous ne pouvez pas instancier, et vous remarquerez qu'il n'est pas légal de faire un constructeur d'instance dans une classe statique.