You really don't want to hide buttons from user. Even if a button isn't relevant at some time, showing it as disabled reinforces that the specific functionality isn't available right now. And graying out is a good way to show disabled in a flat color rich design.
Take this for example. You're filling up your login information and the Login button is grayed out till both username and password fields are filled. If there was no login button at all, it may confuse user.
Hiding buttons may also cause user to spend time searching for it. A grayed out "buy" button on a shopping app for an out of stock item is way better than no button at all. Also helps remember where to find the button when it's enabled.
Inside, the default button and the disabled button are very much the same. However, a proper implementation of the Flat UI style would incorporate more than one color in the scheme. However, I wouldnt push it farther than three distinct colors.
Thanks for so many responses! I thought I'd post the answer because there are so many different viewpoints I didn't want to mark any one of them as singularly 'correct'.
The answer seems to be: You CAN do it, but SHOULD you?
It seems to be that there is a place for inactive buttons on a Flat UI (i.e., you can do it) but you must carefully consider each situation when you want to hide or inactivate a button. Things to consider:
Does the user need to see the next steps available? If yes, use greyed out/inactive.
What is the user's preference?
Are you using a greyed out item help to advertise? If yes, use greyed out/inactive.
Are you using tooltips? Tooltips help to clarify why an element is unavailable.
Have you got sufficient screen space to have inactive icons without too much clutter?