Without you mentioning specific classes I can't go into the design decisions that were made for them. Let me know which classes you are referring to and I'll explain why a particular pattern was used.
Static classes indeed do not dispose of themselves. That is by design and what the static keyword is telling the compiler to do. Nez uses static classes as does the .NET framework, MonoGame and just about every other C# library ever written. Some examples are the Mathf class (math helper methods), several classes of extension methods (Rectangle, Vector2, SpriteBatch, etc), Lerps (for various interpolations) etc. If you have some example of a specific class that would cause an issue being static in Nez I'd love to hear about it.
Don't believe everything you read when it comes to design patterns. There are lunatics all across the Internet that cry about certain design patterns daily. There is absolutely nothing wrong with using the singleton pattern where it makes sense or any other design pattern for that matter. Nez was built to be both extremely flexible for advanced users and extremely simple for new users. If using a singleton helps facilitate those goals and reduced the barrier to entry than it is a good decision IMO.
There is no point in passing around a single reference to an object all over a codebase just to avoid having it be a singleton. That's just silly.