There are no indices on the audit columns. What you're looking at is the clustered index. It's keyed on an "ever increasing" value and should never fragment. The fragmentation is cause by the "ExpAnsive" growth of the ModifiedBy column going from NULL to some value, which causes the row to no longer fit on the page, causing a page split, which is what is causing both the logical and rather nasty physical (page density) fragmentation that you're seeing in the chart.
Of course, the clustered index is the worst place for page splits to occur.
I don't know about using the objectUID coming from AD but it won't matter if you start the ModifiedBy column as a NULL because you'll still get the expansion of rows when you fill it. The only way to solve this issue is to stop the expansion either by making the ModifiedBy column a fixed width (can be a total waste if sporadically populated), assign blanks during the first insert that are equal in number to the average size or slightly larger of the entries in the column, or default it to a blank and move it out of row so the fixed length out of row pointer is always assigned, OR create the column as an int for a user number and have a trigger always lookup the user name to retreive that number. I suppose the AD objectUID could be used for that but UID's are typically 16 bytes where an int is only 4 bytes.