It's actually the exact opposite of fuzzing; with symbolic execution you aim to prove, symbolically, that all possible code paths have some desired behavior (e.g. not crashing,). With fuzzing you just try code paths (guided) randomly and see if any of them crash.
It's arguably distinct from fuzzing since symbolic execution is deterministic, while fuzzing implies a stochastic process.
Even smarter fuzzing tools like AFL which use branches taken as feedback to the fuzzer are randomized.