Should the customers or Product Owner worry about making all the acceptance criteria known in advance? Or should the Development Team and Scrum Master worry about them? 

I'd suppose that it is the responsibility of the customers to exactly express all the acceptance criteria. If they failed to do so, then it is their fault (not the Team's).