GM rulings and GM fiat rest at two ends of a single spectrum.
On one end of the spectrum you have GM decisions that are completely disconnected from the existing rules. These are examples of clear GM fiat and the same decision would be made regardless of what rule system the GM was using or even if there were no rules at all.
On the other end of the spectrum you have a very simple and straightforward ruling: The players want to do X. There is a rule for X. We will use the rule to determine X.
In between you have a broad spectrum of gray.
For example, let’s consider the case of jumping across a crevasse. At one end of the scale you have pure fiat: The GM says “yes, you can” or “no, you can’t” based on his desire for them to do so, his whim, or somesuch. At the other end of the scale you have the simple application of 3E’s jumping rule: The GM simply picks up the rule, applies it, and determines whether or not the action is a success.
In between you might have OD&D, which lacks a clear rule for jumping. So the GM says, “He has a Dex of 15. He could probably make this jump easily, so yes.” That seems to still clearly be a ruling; the GM is simply figuring out how to apply the mechanics in a situation for which a clear rule does not exist.
Heading further into the gray we have thinking like: “His character background says that he was an Olympic track athlete, so it makes sense that he should be able to make this jump.” or “Last week he wasn’t able to jump over that pit and this crevasse is even wider, so it makes sense that he won’t be able to make this jump.” Are those rulings or fiat? It’s getting a little harder to judge. (Is the latter a ruling based on a previous fiat? Or just more fiat?)
Another way you can draw the distinction is that it is very easy for rulings to become rules; it is difficult or impossible for fiat to do so.
For example, in a case of pure fiat (where I say “yes, he can jump that crevasse because I say so”) it is very difficult to then make an informed ruling based on that fiat. At the purely local level it probably means I’ll decide that the character can make that same jump again, but whether or not that will have any wider applicability will probably still depend on some arbitrary decision-making.
On the other hand, the more concrete the ruling the easier it is to begin applying it as a rule. For example, if I say “he has a Dex of 15, so he can make the jump”, then it’s relatively easy to apply that as a rule and decide that, yes, the character with a Dex of 16 can also easily make the jump.
If I go even further and base the ruling on something like “I’ll say that you can jump 2 feet for every point of Dex”, then it’s very easy to simply treat that as a rule going forward.
A third way of looking at this is through the lens of consistency: The easier it is to reapply the same decision in a consistent fashion across multiple situations (because it’s based on some sort of meaningful criteria), the more likely it is that the decision is a ruling. The more difficult it is to do so, the more likely it is that the decision is fiat.
Which is one of the reasons why I say that a properly structured rule facilitates rulings.