Police said the suspected driver left the scene of the crash, which happened at about 1.30am at the Royal Family Hotel on North Terrace in Port Elliot, before he returned a short time later.
A 37-year-old man was arrested by police and has been taken to Christies Beach Police Station.
Four people were treated for minor injuries, including a 21-year-old man from Goolwa Beach, a 37-year-old woman from Port Elliott, a 20-year-old woman from Inman Valley and a 30-year-old man from Blackwood.
A 22-year-old man from Hindmarsh Island was left with serious life-threatening injuries and was flown to Adelaide where he remains in hospital.
North Terrace will remain closed for most of the day while the scene is examined.
Port Elliot is a beachside town near Victor Harbor south of Adelaide.