Based on my experience with core I don't think Flarum requires cookies for guests.
Yet it's the easiest solution code-wise. The session cookie and storage is built with Symfony's session manager. If you want to check if the user is logged in, you have to boot the session manager, which will create the cookie if it doesn't exist.
You could probably only check for cookies and not create one until you actually login, but I'm afraid you might have to rewrite a lot of the code that manages the whole session ?
Not having a session available all the time could make building some kind of extensions harder if they have to ask for the session to boot and might result in some hacks building around the official session manager...
For example cookies can be useful for bot detection / rate limiting / analytics even if you're not logged in (so you're not asked to fill a captcha every single click for example). But I don't know if any extension uses that kind of feature right now.