The handling of vanity paths is since a long time a little bit broken:
on startup a query is done using the mixin sling:VanityPath, from that point on observation is used but only checking the existence of the respective properties, but not the mixin. So it will find/use the props even if the mixin is not set. Then you restart, and these things are gone as the query does not find them.
We should not rely on the mixin at all - we simply use the properties. We do the same for other things like the resource type as well, there is a mixin defined but we don't check it. And mixins are a JCR only concept anyway