Потому что в силу каких-то случайных причин Колпино проверяется раньше СПб, а Металлострой - позже.

Что касается иерархии, имхо, “город внутри города” - это что-то неправильное.
И надо определиться, что такое Металлострой; если это пригород Петербурга, то надо его обозначить как suburb, а если это самостоятельный город, - надо менять границу place=city Петербурга, чтобы Металлострой в него не попадал.