Difference between symbolic execution and reachability analysis
Generally, reachability analysis is a goal (determine which points in the code are reachable), whereas symbolic execution is a specific algorithmic technique (a tool for analyzing code).  You can use symbolic execution for reachability analysis, or for other goals.  Conversely, you can use other algorithms for reachability analysis.

Classically, symbolic execution was a static analysis.  However, recently it has been widely used in a hybrid static-dynamic analysis: see, e.g., concolic execution.  These hybrid methods seem to be very effective, but they are not purely static.