If the container is simple, it's a good choice to do it yourself. However, containers have a way of attracting a lot of functionality and getting complex quickly. Service and component lifetime and thread management, activation models, dynamic proxying of components, container extensibility, etc., can quickly become a large sink of development time.
With a document-centric app like Paint.Net it probably won't put so many burdens on the container to allow a simple one to suffice. However, I'd be interested in the opportunity to build a robust scene model and rendering engine, which could be quite parallel in architecture and even distributed in time. This means that component lifetime and inter-component communication becomes important - something that a good container might take care of. Another interesting aspect for Paint.Net is the large number of commands. As components are added, those which can respond to commands could be registered and this will need to get tracked. Doing this in the container is a natural way to take care of this, increasing complexity.