What's your recommended practice for the fill colours of disabled buttons? To change the colour itself or to reduce opacity? Do you use the same treatment for light vs dark modes?

100% Change the colour. The way we do it is have a palette defined for both light and dark modes that way you have more control over it. Check out the radix colour system, they break down the palette real nicely radix-ui.com/colors