Place the pork shoulder, onion, garlic, and water or chicken broth in a large pot or Dutch oven. Bring to a boil over medium-high heat, then reduce to a gentle simmer. Skim off any foam that rises to the surface.
Simmer for 1 1/2 to 2 hours, or until the pork is tender enough to pull apart easily with a fork.
While the pork cooks, place the guajillo and ancho chiles in a bowl and cover with hot water. Let them soak for 15 to 20 minutes, or until softened.
Transfer the softened chiles to a blender with a little of the soaking liquid and blend until smooth. For a silkier broth, strain the chile sauce through a fine mesh sieve.
Remove the tender pork from the pot and shred or chop it into bite-sized pieces. Return the pork to the pot. Discard the cooked onion and garlic if desired.
Pour the chile sauce into the broth and stir well. Add the hominy and oregano, then simmer for 25 to 30 minutes more. Taste and season with salt and black pepper as needed.
Ladle the pozole into bowls and top with cabbage, radishes, diced onion, cilantro, lime, avocado, and tostadas or tortilla chips. Serve hot.