La base de datos solo se creará cuando realmente use el contexto.
Si ha anulado el método Seed en su inicializador de la siguiente manera:
protected override void Seed(MyContext context){...}
El código semilla solo se ejecutará cuando utilice una instancia de MyContext.
Es por eso que funciona cuando usas
var ctx = new MyContext();
ctx.Database.Initialize(true);
Siempre puede forzarlo a crear usando su contexto en el método Application_Start() en Global.asax.cs como:
System.Data.Entity.Database.SetInitializer(new MyInitializer());
MyContext db = new MyContext();
db.Database.Initialize(true);
//or even something like db.Users.Count();
O se creará más adelante cuando use su contexto. Podría haber parecido que dejó de funcionar porque eliminó algún código que usaría el contexto en el inicio de la aplicación.