Bangladesh, who made 295 in their first innings, had resumed their second innings on their overnight score of 106 for four after Australia had declared on 556 for four in reply.
Leg-spinner MacGill (5-56) and paceman Jason Gillespie (4-38) each took three wickets in the morning session before MacGill was named player of the match and the series, in which he claimed 17 victims.
Top-ranked Australia won the first Test inside three days by an innings and 132 runs in Darwin while for Bangladesh, Monday's series defeat extended their record to 20 losses and one draw in their 21-match history.
Bangladesh 1st innings 295
Australia 1st innings 556 for four wickets declared
Bangladesh 2nd innings (resumed at 106 for four)
H Sarkar c Hayden b MacGill 55
J Omar lbw Gillespie 8
H Bashar c Langer b Lee 25
M Ashraful lbw MacGill 0
S Hossain c Ponting b MacGill 16
A Kapali c Langer b MacGill 17
K Mashud lbw Gillespie 14
K Mahmud c Lee b MacGill 17
T Baisya lbw Gillespie 0
M Mortaza not out 3
A Hossain b Gillespie 4
Extras (nb-2, lb-2) 4
Total (58.4 overs) 163
Fall of wickets: 1-12, 2-87, 3-90, 4-90, 5-123, 6-136, 7-156, 8-156, 9-156
Bowling:
G McGrath 15-9-22-0,
J Gillespie 12.4-3-38-4,
S MacGill 20-3-56-5,
B Lee 11-2-45-1.