+1 for using BeyondCompare -- true, it's not free... but it's the best $40 I've ever spent on software!
I assume you've already enabled the "pretty: true" option in your settings.js file... that really helps avoid having to do any JSON re-formatting inside the comparison tool. Unfortunately, JSON does not allow newlines inside of strings, so long blocks of text found in function text, template body, and change node JSONata expressions all appear on 1 line.
To get around those limitations -- and to allow for fine-grained git change reporting -- there are several solutions I've seen over the years. I had even started my own file-based storageModule implementation that decomposes the flows into individual node "files", laid out in a tree according to the tab/group/node structure of my flows. I would have finished it by now, if I hadn't switched jobs recently... and no longer use node-red in my day job. However, I would still like to finish it and add it to the flows library as a plug-in, if there is wider interest.