First in first, the faces cut out by boolean modifier will use the data from that cutting cylinder. So you need to set that cylinder smooth in shading.
Note: I am using bounding box to display that cylinder
Due to how boolean work, you might want to apply sub-modifier before boolean modifier and make all your object smooth.
And also, vertices cannot be smooth by sub-modifier after boolean modifier (the crease value seems to be dropped), so you will need to add sub-modifier on that cylinder too.
You can download this example here: