Silvally is flagged in game data as being "compatible" with all three pledges, but due to the way the actual in-game pledge tutor works, it looks for the first such move that your choice is compatible with, and stops there while only attempting to teach that move. Just as starters are traditionally numbered in Grass-Fire-Water order, Grass Pledge also comes before Fire Pledge or Water Pledge, so the pledge tutor will only attempt to teach Silvally Grass Pledge, regardless of its form, and never any other move.