Nothing has "changed" in the GSX overall logic, it's just we have a NEW operator in Iran, Saman, which is present both as handling operator and a catering operator, which is of course realistic, since they are operating as a ground handler in Iran with about 3000 employees.
I hope this clarifies the fact that is completely correct and realistic we would see Saman in Iran.
As Kevin tried to tell you, handling and catering are selected independently, there's no relationship whatsoever between the handling operator and the catering operator. And NONE of them is related in any way to the airline you are flying on either.
What controls the operator selection on any given airport, is the Scoring system, which has a while chapter named The Airport Scoring System at Page 90 of the GSX Manual, which I strongly suggest reading, before assuming there's anything "wrong" in the way GSX selects an operator.
In the specific case, we gave to Iran Air handling and Saman handling an equal score of 2, because they both got an OI partial matching for the area, so they will be both present in all airports in Iran. And same for Iran Air Catering and Saman catering and, since they are assigned independently when you'll see the operator menu coming out, you can freely choose one as the handler or the other as caterer, that's how it's supposed to work.
Of course, the whole scoring system will be completely bypassed, if you Customize gates, and set an explicit preference for one (or more) operators, which again are separated from Handling and Catering. The operators you'll set here will ignore the whole scoring system, so you can set any operator(s) at any parking spots so, for example, if you know that Saman operates only a certain airports or even in specific terminals or gates, you CAN do that.