No, you might don't need GNU ELPA or any ELPA.
The practical reason not to use GNU ELPA or any third party repository is to protect my Emacs from ELPA shut down. Shutdown did happen from time to time (see https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1)
Most of my packages are downloaded from https//melpa.org , I could avoid GNU ELPA by creating a small local package mirror of selected GNU ELPA packages.
Check my setup at
https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el, GNU ELPA is not used.
If I have to use some GNU ELPA only packages, I'd rather create my own local ELPA instead (it's as simple as create a text file
archive-contents), Check my
seq-2.20.tar only exist at GNU ELPA and I need this it. So I add this package into my local elpa at
Currently I only use four packages from GNU ELPA,
These packages are placed in my
localelpa so I don't need access GNU ELPA.
You can also check my package https://github.com/redguardtoo/elpa-mirror which creates a local repository from installed packages. So even remote repository (GNU ELPA, MELPA) is optional now.
You can also use source instead downloaded package. Please check https://github.com/redguardtoo/emacs.d/tree/master/site-lisp.
rainbow-mode, You need understand what's
load-path (http://emacswiki.org/emacs/LoadPath) if you use source.
You can also advice
package--add-to-archive-contents to tweak packages before they are displayed in package manager. This is kind of undocumented hack. It works from Emacs 23.4 to Emacs 27. See
init-elpa.el for example.