If your Plugin uses its own 'custom materials' why not supply them disassembled in a 'Textures' subfolder within your plugin's own subfolder [that is itself within Plugins].
Then you'll know where it is automatically from File.dirname(__FILE__).
Because SKMs are not easily accessible with the API, then you define plain colors for newly made materials [if needed] as the tool runs [that way any purged materials are remade], and where needed add textures to these, based on Image files kept in a that plugin's 'Textures' subfolder ?
That way you never need to go near the Materials folder.
Your custom materials are automatically listed as loaded into the Model, and any other unloaded materials [as SKMs] can be accessed too from the Materials Browser by the user in the normal way...
You are unlikely to have permission to write to any Materials folder in the PC's Program Files tree, or the MAC equivalent.
If the users has set up their own custom Materials folders, then on a PC they could be anywhere... and on a MAC its location in their User Lib folder tree is recommended, but not guaranteed [it needs making by them] - and if it were missing and you made it then it's not going to be added to the list of 'Material Collections' in the Materials Browser anyway [unless the user does it manually] ?