The find package for Boost populates a local variable (Boost_LIBRARIES) with the libraries for the components you chose. It is perfectly safe to call
find_package(Boost REQUIRED COMPONENTS program_options)
(or anything else) right before you want to use it. This will ensure that the variable is populated correctly for your executable.
Several find modules take the approach of populating local variables with customized results for use in that directory/executable, while deferring most of the heavy-lifting to global cache variables. Qt, and the new VTK config code in 6.0 do the same, so you can conceivably have several different versions of Boost_LIBRARIES that depends on the most recent find_package call in the current scope.