La explicación más técnica: en la DB se guardan todas las horas en UTC y para mostrar la hora al usuario se convierte on-the-fly en la vista de acuerdo a la preferencia del usuario. Para esto, PHP se comunica con la librería ICU que está instalada en el sistema por lo que siempre debería estar correcto, incluso en DST ya que tzdata se actualiza de forma automágica cuando sale alguna actualización