The Microchip compiler is based on GCC, and therefore its source is open. Microchip added some of their own stuff for the more advanced optimizations, but the basic compiler is free and its source is available.
Trying to be vendor independent with microcontroller compilers is also a bit silly. Yes, C is roughly a standard, but enhancements need to be made to any one particular instance to use the architecture well. There are going to be some source code differences required between different microcontroller families no matter what compiler you use. Just because two compilers are based on GCC doesn't mean application code will be source code compatible.
At best, source code compatibility will apply to the generic C statements and arithmetic. However, the bulk of embedded firmware on such small resource-limited systems will be managing the specialized hardware peripherals. That code will be specific to that family, and sometimes to the part, by its very nature. Demanding general C compatibility is for 5% of the solution and ignoring the 75% problem of porting between different devices in the first place.
Also, there is little point in demanding that the source code to the compiler be open. Are you really really going to get in there and make changes? That is best left to the experts whos full time job it is. For a one-off personal project, it does make sense to use a free compiler, but then most vendors have some flavor of free compilers. All the Microchip compilers have free versions that only differ from the full ones in that some of the advanced optimizations are turned off. In most cases this is irrelevant. If you are pushing limits, then for a one-off use the next size up chip, and there is always assembler available if you really need the code space and speed for particular parts of the system.