Dafür zuerst ein paar Grundlagen:
Eine CPU ist eine extrem vielseitige Recheneinheit, sprich das Ding hat nur eine sehr geringe Kernzahl, dafür kann man darauf so ziemlich jede Aufgabe ziemlich effizient und schnell berechnen. Eine Art eierlegende Wollmilchsau.
Eine GPU ist eine extrem spezialisierte/einseitige Recheneinheit, dafür hat sie aber extrem viele Kerne (teilweise über 4000 heutzutage!), sprich Aufgaben die sehr gut parallelisierbar sind und die der Architektur "gut liegen" sind extrem schnell, Dinge die nicht parallelisierbar sind und schlecht auf der Architektur laufen sind extrem langsam.
Bei Videokompression ist es nun so, dass moderne Codecs sehr sehr viele Methoden und Algorithmen anwenden um die Bilder eines Videos möglichst platzsparend aber dennoch in bestmöglicher Qualität abzuspeichern (kannst ja mal hier reinschauen was man da so alles einstellen kann:
Command Line Options — x265 documentation). Diese Codecs sind heutzutage extremst komplex und dafür sehr effizient in Sachen Qualität pro Speicherverbrauch, dafür brauchen sie sehr viel Rechenleistung beim komprimieren.
Gerade weil diese Algorithmen sehr komplex sind liegt es in der Natur der Sache, dass es sehr schwierig bis unmöglich ist, diese komplexen Operationen auf einem so spezialisierten Chip wie der GPU vernünftig laufen zu lassen, erst recht nicht parallel. Es gibt Teile des Codecs die sehr gut auf einer GPU laufen können (etwa eine Aufgabe "vergleiche jedes Pixel von Frame 1 mit jedem Pixel an gleicher Stelle von Frame 2" - da können alle Shaderprozessor der GPU gleichzeitig Abgleiche machen) und es gibt Dinge die sehr schlecht laufen (etwa "Untersuche Objekt A in Frame 1 in welche Richtung es sich in den darauffolgenden Frames bewegt und speichere nur den Bewegungsvektor ab" - da sind Ergebnisse von anderen Ergebnissen abhängig und im Extremfall müssen 3999 Shadereinheiten auf das Ergebnis eines einzelnen warten bis es weitergehen kann).
Nun sind die modernen Codecs so ausgelegt, dass ihre Grundfunktionen möglichst "freundlich" gegenüber verschiedenen Chiparten sind und die GPUs teilweise sogar extra Schaltkreise in Hardware haben um genau das bewerkstelligen zu können - das ist die viel zitierte Videobeschleunigung von Grafikkarten wie auch Shadowplay usw..
Hier geht es aber nur um Grundfunktionen, sprich weiterführende Algorithmen eines Codecs werden schlicht nicht verwendet da die GPU das nicht sinnvoll kann oder wenn mans erzwingt viel langsamer als eine CPU wäre (und das ist nunmal nicht werbewirksam).
Wenn du also deinem Encoder sagst "kodiere mir das Video in den HEVC mit 5000 kbit/s" (macht man heutzutage nicht so, nur als Beispiel), dann kann die CPU alle Funktionen nutzen die der Codec beherrscht (sofern der Benutzer in der Lage ist es einzustellen...), eine GPU aber nur die Grundfunktionen. Sprich die CPU hat viel mehr Möglichkeiten, mehr Informationen in die gleiche Datenmenge zu pressen weil die verwendeten Algorithmen vielseitiger sind (Details würden zu weit führen). Dann hast du am Ende zwei gleich große Dateien, bei der die auf der CPU berechnete version besser aussieht als die die auf der GPU (schneller) berechnet wurde. Es ist übrigens so, dass eine sehr schnelle CPU wenn man auch ihr sagt sie soll alle komplexeren Algorithmen weglassen nicht mehr langsamer ist als die GPU auch - das Ergebnis aber eben auch nicht mehr besser.
Moderne Kodierverfahren laufen etwas anders ab, hier lässt man den Codec selbst entscheiden wie viel Bitrate er dynamisch gerade verwenden muss um eine definierte gewünschte Bildqualität zu erreichen ("ConstantRateFactor"-Methode). Dann ist es so, dass die Qualität beider Versionen fast exakt gleich ist (fast deswegen weil die Quantizerfunktion etwas anders aussieht aber das ist vernachlässigbar). Da aber die CPU alle Funktionen des Codecs nutzen kann und die GPU nicht ist die Datei die am Ende bei der GPU herauskommt zwar schneller fertig und sieht gleich gut aus, ist aber viel größer.