Base64 carries binary through text
It exists to move non-character data — images, encrypted bytes — through channels that only handle text, such as mail bodies, JSON strings and HTTP headers. Three bytes become four characters, so the result grows by about 33%.
URL encoding protects delimiters
In a URL, ?, &, = and / are structural. When a value contains them the structure breaks, so they become forms like %26 to mark them as data. Only the substituted characters grow.
Neither substitutes for the other
Base64 output contains + and /, both meaningful in URLs. Conversely URL encoding cannot turn binary into text. Their purposes do not overlap, so you choose by situation — and sometimes you need both.