That review request is how GObjects work. It’s adding a subclass of PurpleRequestField to handle QR codes and allow user interfaces to determine how to handle them. This boilerplate as you called it is well known to anyone that has developed anything with the GNOME libraries.
This is done this way because libpurple not only abstracts the protocols, it also abstracts the user interfaces. You can read more about that here.
As for language bindings, the GObject system that Purple3 uses/implements has a tool called gobject-introspection that makes language bindings a breeze, see gtk-rs and zig-gobject.