There are many successful websites that are blocking all bots except for major search engines such as Google, though most websites allow for bots to crawl.
There are pluses and minuses to blocking all unknown or low ranking bots.
Some bots can become abusive and can crawl your site too frequently affecting your server performance. There are also bots that want to scrape your website's content without your consent and not provide you any credit or links. You also have bots that are trying to find exploits in your server's security, and with enough crawls they may be able to find one depending on your setup.
On the other hand, good bots may crawl your content, publish portions of it on the web while linking back to your site. These potential links naturally can help your SEO greatly.
While it's primarily important to look out for the well-being of your own site while deciding which bots to allow and which to ban, it's worth noting that allowing unknown and new bots to crawl your website is in the internet's general best interest. This is because there are good bots out there trying to do new and exciting things, and when enough websites blacklist all bots except for the major ones like Google, it makes new bots and search engine competitors unable to enter the market as they simply can't crawl enough websites.
A generally wise practice is to throttle smaller bots from crawling too many pages too quickly. This will prevent bad bots from trying to break your site while allowing good bots to do their thing. You can throttle bots by setting a "Crawl-delay" in your robots.txt which specifies how many seconds a bot has to wait before loading another page. If you find that bots aren't obeying the crawl-delay when viewing IP addresses in your server logs, you can simply ban the IP address. If a bot isn't obeying a robots.txt crawl-delay specifications, it is considered to be a "bad bot".