It depends on your intended development cycle and size of the project. Ideally, you should be push/pull deployment for most of your work, and reserve version creates for "gold master" or "stable release" versions.
I am personally working on a project, and I have never needed more than just one version per day. Creating a lot of versions in a short period of time tends to get really messy and is probably not a good solution for long-term development.
Consider the following process: create a Scratch Org, do your development (push/pull) in there, optionally create a second Scratch Org, force:source:deploy to there for testing, and only after testing looks good, commit and create a package version.
Ideally, you do not want to be in the habit of: make a trivial change, build a package version, install and test, repeat. This is incredibly inefficient by comparison, as you'll spend most of your time waiting for builds instead of developing.
The Developer Edition Dev Hub is perfect for small groups of developers (1-3 or so) and doesn't require any commitment (in terms of cost, yearly subscriptions, contracts, etc). Obviously, this won't scale to larger projects, but that's up to you to decide where the limit is.