Preheat oven to 350 degrees. Shred cheese and cut cream cheese into chunks then set aside. Add butter to saucepan over medium-high heat and allow to melt.
While butter melts, chop onion and mince garlic. Add onion and garlic to saucepan with salt and pepper and cook until fragrant and onion starts turning translucent (about two minutes).
Stir in flour and cook for another two minutes to make a simple roux.
Slowly pour milk into pan while stirring to incorporate into the mixture (this helps prevent lumps). Continue stirring and cooking until mixture is thickened and bubbly (about 5 minutes).
Remove from heat and stir in mustard, two cups of shredded cheese, and cream cheese until sauce is melted and uniform.
Add shaved brussels sprouts, and cooked rice to pan and mix until evenly coated with cheese sauce. Spread into a baking dish then sprinkle the remaining cheddar cheese over top. Bake uncovered for 30 minutes or until top cheese layer is melted and golden brown and the casserole beneath is bubbly.
Notes
Preparation
Don't use pre-shredded cheese (that you'd buy in a bag from the grocery store) here as it is typically coated with an anti-caking agent that affects the way it melts in recipes like this.
Shredding the cheese can be made much quicker by using a food processor with a shred disc attachment.
Make Ahead
You can prep this dish up to two days in advance. Assemble the casserole then cover snugly with foil and refrigerate. When it's time to finish, let the casserole come to room temperature while your oven preheats then bake as normal.
Substitutions
You can use many different cooked grains or legumes in this recipe such as white or brown rice, quinoa, and legumes.
Use plant-based versions of the cheese, milk, and cream cheese to make this recipe vegan.
Storage
Store the cooked casserole covered in the refrigerator. Keeps for up to three days.
To freeze, wrap the dish in multiple layers of aluminum foil then place in the freezer. Keeps for up to three months.