Pretty sure it's how the code works. Pokemon Go is notorious like that. The code probably checks the Pokedex # and whether you have the requisite candies, and if the criteria matches, shows the Pokemon without counting for event exclusives as exceptions. This has happened many, many times before for other Event Pokemon like the event hat Pikachus.
Source: Let that god-awful game take over my life for like 3 years and saw this same thing happen over and over again. That said, I'm not 100% sure that's how the code works, and this has persisted long enough for it to qualify as "not-a-bug-but-a-feature".
Also:
In general, all Event Pokémon have the same stats of the non-costumed Pokémon form, being the only difference the visual attributes.
Some Event Pokémon cannot evolve, while the non-costumed form can.
from here but also tracks with personal experience. As the stats are the same as non-costumes, the game likely assumes that the hat Bulbasaur can evolve, but upon going that Pokemon, the game disallows you, probably because Costume Ivysaur and Costume Venusaur don't exist.