Should I store arrays in custom fields or create custom tables?

Since you plan on retrieving and displaying the data ( and most likely wanting to sort it ) then you should store your reviews data in a custom table.

All of these fields could be set as integer only:
id,comment_id,food,service,location

Then you could grab the data by joining this table to the comments table and the comments table to the posts table.