OP it doesn't sound like you've had a update fail at all.
There's already been one link posted https://wiki.archlinux.org/title/Pacman/Pacnew_and_Pacsave
Which explains why .pacnew files are created. This is pacman working as intended not pacman failing.
As you've said you've made changes to /etc/default/grub .
I'd hazard a guess you'd be even more annoyed if due to the default packaged version of /etc/default/grub changing in the package pacman just replaced your customised version with its new version.
So it doesn't, it saves it with a .pacnew extension so that you can compare the changes at your leisure.
I've just had a look and I've 8 .pacnew files under /etc. The oldest of which have been there since December 2021 (I'm lazy I guess).
Let's take one of these /etc/pacman.conf.pacnew
diff -u /etc/pacman.conf /etc/pacman.conf.pacnew
--- /etc/pacman.conf 2022-06-02 10:17:24.816749191 +0100
+++ /etc/pacman.conf.pacnew 2022-05-09 18:24:23.000000000 +0100
@@ -22,7 +22,7 @@
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
-IgnorePkg = linux linux-headers
+#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
@@ -30,7 +30,7 @@
# Misc options
#UseSyslog
-Color
+#Color
#NoProgressBar
CheckSpace
#VerbosePkgLists
@@ -90,46 +90,11 @@
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
-[lib32]
-Include = /etc/pacman.d/mirrorlist
+#[lib32]
+#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
-
-[universe]
-Server = https://universe.artixlinux.org/$arch
-
-
-### Arch
-
-
-#[testing]
-#Include = /etc/pacman.d/mirrorlist-arch
-
-
-[extra]
-Include = /etc/pacman.d/mirrorlist-arch
-
-
-#[community-testing]
-#Include = /etc/pacman.d/mirrorlist-arch
-
-
-[community]
-Include = /etc/pacman.d/mirrorlist-arch
-
-
-#[multilib-testing]
-#Include = /etc/pacman.d/mirrorlist-arch
-
-
-[multilib]
-Include = /etc/pacman.d/mirrorlist-arch
-
-#[home_post-factum_kernels_Arch]
-#Server = https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/$arch
I can easily see from that the the only changes are my own and I can simply delete the .pacnew file.
So just compare the files (you can use a gui diff tool if you prefer). If there are differences you don't understand come back and ask about them specifically.