It wasn’t done based on principle but laziness. Congress undoubtedly has the power to leave some particulars of how to spend money up to the President. But Congress has abused that power to basically provide the executive with giant slush funds with only the vaguest directions as to how to use that money. Congress can take that power back at any time.