I think it's possible to run everything in the same RPi 3b, however I think it will not be smooth, cause there is only 1GB of ram available...
I think the best is one device for each service, however I know that sometime we can't afford that, so I think you need at least 1 device for Pi-Hole and Octoprint, and another to the Home Assistant
Definitely agree they should be split up if possible. Octoprint and Home Assistant are both rather demanding on a Pi, particularly the Pi 3B.
I would however opt to run Pi-Hole on the Home Assistant device as there is a plugin built in for it, and Home Assistant is the kind of thing you would be more likely to leave on at all times.
Just as a tangent, definitely get an SSD for whatever device is running HomeAssistant and set it as the boot drive as the constant writes will cause your SD card to explode in a huge fireball after not too long.