Fatti: Fatti: A. B._, nato nel 1947, dal 1° luglio 1974 alle dipendenze della X._ SA, come capo magazzino, in seguito alla ristrutturazione dell'azienda datrice di lavoro e alla prospettata soppressione del proprio posto di lavoro, ha stipulato in data 5 marzo 1999 un "accordo sul versamento di un'indennità di buonuscita" con X._ SA, in forza del quale l'interessato, accettando di anticipare al 30 giugno 1999, anziché per la fine del 2000, la cessazione del rapporto di lavoro, che sarebbe comunque stato soppresso, si assicurava un'indennità di partenza di fr. 142'515.-. Mediante decisione 28 luglio 1999, la Cassa disoccupazione del Sindacato Edilizia & Industria (SEI) ha sospeso dal 1° luglio 1999 - data a partire dalla quale l'interessato si è annunciato all'assicurazione contro la disoccupazione - e per la durata di 31 giorni il diritto all'indennità di B._ per il fatto che l'assicurato risultava disoccupato per propria colpa (grave). Mediante decisione 28 luglio 1999, la Cassa disoccupazione del Sindacato Edilizia & Industria (SEI) ha sospeso dal 1° luglio 1999 - data a partire dalla quale l'interessato si è annunciato all'assicurazione contro la disoccupazione - e per la durata di 31 giorni il diritto all'indennità di B._ per il fatto che l'assicurato risultava disoccupato per propria colpa (grave). B. Adito da B._ con il patrocinio del Sindacato Y._, il Tribunale delle assicurazioni del Cantone Ticino, per pronuncia 4 gennaio 2000, ne ha accolto il gravame rilevando in sostanza che, date le circostanze del caso, lo stato di disoccupazione che si era venuto a creare non era imputabile all'assicurato. B. Adito da B._ con il patrocinio del Sindacato Y._, il Tribunale delle assicurazioni del Cantone Ticino, per pronuncia 4 gennaio 2000, ne ha accolto il gravame rilevando in sostanza che, date le circostanze del caso, lo stato di disoccupazione che si era venuto a creare non era imputabile all'assicurato. C. Il Segretariato di Stato dell'economia (seco) interpone ricorso di diritto amministrativo al Tribunale federale delle assicurazioni, al quale chiede, in annullamento del giudizio cantonale, la conferma della decisione della Cassa. B._, sempre patrocinato dal Sindacato Y._, propone la reiezione del gravame, mentre la Cassa disoccupazione del SEI ha rinunciato a determinarsi. 