One major advantage of using a Diff utility that understands how PB source code is structured (such as the admittedly aged ProDiff utility), is that it performs the Diff analysis on each method separately instead of on the entire exported source file(s) - All of the syntax in the object still gets analyzed and compared, but the comparison results are organized in a way that makes sense to a PB developer. The relative ordering of the methods within each object becomes immaterial.
Another alternative you could try is to do your modifications in PB as normal, but when you want to perform a Diff comparison, you export the source in both objects, edit the source of the modified object, and move the object functions and events around so that the order corresponds with the older version of the object. The event and function prototype declarations can also be reordered. This can be a little tedious, but it's not overly complicated. I suggest you practice on the exported source of several objects of increasing complexity to get a feel for the effort that would be required.
Yet another option would be to write a little utility that identifies each section and method within an exported source file and writes declaration section and method to its own file in a temporary "comparison" folder. You could also simply do this manually if you don't want to create a utility that does it for you. Once broken down into method and declaration sections (files), the Diff utility of your choice could be used on each piece. Object source syntax is pretty well-organized and the sections are easy to identify.
By the way, I see that checking-out objects generates ".sr*" text files that have a predefined character set in PB that, in my case, resolves latin symbols quite cryptic. Is there are a way to configure such a character set for checking-out objects?
When comparing objects outside the PB IDE with my diff utiliy, it recognizes the character set automatically and no cryptic latin symbols appear. Not so within the IDE.