It's possible that in the future strace will use BPF as well to lower its overhead.
bpftrace is also more versatile. You could use it to e.g. collect stack traces for all the syscalls a program makes. You can also attach actions to more things than just syscalls. You can e.g. use kprobes to inject code into kernel functions which aren't exported as syscalls.
strace will tell you it failed, but bpftrace can help understand why.
Note that I said "help": bpftrace can tell you "this function failed with EPERM", but e.g. ovl_fill_super() can fill with EPERM for lots of different reasons. So it's a bit like printf debugging. And you're SOL if the error is generated within that function or from an inlined function :(
strace requires less than 2 MB
Bigger is better :)
apt install bpftrace: needs 1,201 kB
apt remove strace: frees 1,792 kB
For example, is clang already installed
45MB is still huge; its not even statically-linked
The largest programs I use, even when statically-linked against musl are all under 6MB