STATS:
Keldeo's stats are 091 in HP, 072 in Attack, 090 in both Defense and Special Defense, 129 in Special Attack, and 108 in Speed.
Virizion's stats are 091 in HP, 090 in both Attack and Special Attack, 072 in Defense, 129 in Special Defense, and 108 in Speed.
MOVES:
Keldeo can learn Normal-, Water-, and Fighting-type moves through level-up. It can also learn Normal-, Water-, Fighting-, Poison-, Flying-, Bug-, and Rock-type moves as TMs.
Virizion can learn Normal-, Grass-, and Fighting-type moves through level-up. It can also learn Normal-, Grass-, Fighting-, Flying-, Bug-, and Rock-type moves as TMs.
TYPING:
Keldeo is a Water/Fighting-type: which makes it resistant to Fire, Water, Ice, Bug, Rock, Dark, and Steel; and weak to Electric, Grass, Flying, Psychic, and Fairy.
Virizion is a Grass/Fighting-type: which makes it resistant to Water, Electric, Grass, Ground, Rock, and Dark; and weak to Fire(2x), Ice(2x), Poison(2x), Flying(4x), Psychic(2x), and Fairy(2x).
By Typing, Keldeo has the least number of weaknesses (5) compared to Virizion (6). Also, Keldeo has more resistances (7) than Virizion (6).
By moves, they both learn the same number of different types of moves through level-up. But, Keldeo can learn 7 different types of moves as TMs.
By stats, they both have a BST of 580, HP stat of 091, and Speed stat of 108. Virizion's Attack stat of 090 is higher than Keldeo's Attack stat of 072. Keldeo's Defense stat of 090 is higher than Virizion's Defense stat of 072. Keldeo's Special Attack stat of 129 is much higher than Virizion's Special Attack stat of 090. Virizion's Special Defense stat of 129 is much higher than Keldeo's Special Defense stat of 090.