I am making a custom c++ 3D game engine using openGL right now and it's a massive undertaking. I have a lot of respect for folks like Jonathan Blow who manages to be an incredible game designer while also being a super programmer.
In my case, i just decided to give it a try because if i ever watch an engine/game maker software tutorial again i will most likely throw up.The amount of trivia knowledge you need to have to make something in those engines is huge and usually non transferible between them.
Also if you want to make sure you will provide the absolute best experience possible for your players, you need to have control of the low level stuff. I may be wrong but i don't think Unity allows you that kind of control. Two examples are Subnautica and Firewatch, while being excelent games in their own way, fail miserably in loading up the game assets in time after player spawn (subnautica mostly) and are filled with visual artifacts and texture problems (both games) while The Witness does not give you even the smallest hickup whatsoever.