The results have to differ because the algorithms in the softwares, you mentioned, are not identical. Fortunatelly, the algorithms do not differ much. Of course, there are differences in the outcome but those are rarely essential for the overall impression of the analysis.
You can take a look at source codes for QGIS and GRASS to figure out how the viewshed is calculated, but unfortunatelly the algorithm used in ArcGIS is not publicly known. If you are intrested in details, about the differences amogst algorithms that can be used to determined viewshed, there is a great article by Pete Fisher covering this topic - http://www.tandfonline.com/doi/abs/10.1080/02693799308901965.