One additional scenario is similar to the use in python and C# of properties, but in languages that don't have the feature.
In general, you can declare something as just a member of the class; let's say, 'name' as a string. This means that you access it like this:
someobject.name
Later, you decide that the name really needs to be dependent on what's in the object. So it should really be a function. Oops! Even with no arguments, that means all code that accesses it now has to be changed to
someobject.name()
But if you have a lot of instances of this call, the chances of nothing going wrong with that is pretty low - somewhere this change won't be made, the program will crash when you get to that point, etc.
Properties in C#/Python allow you to substitute a function in for what used to be an attribute, while still allowing it to be accessed like an attribute i.e. with no change. You don't even have to have planned ahead.
If your language doesn't have that, you have to plan ahead, but you can still sort of support it the way people did before by making it a function from the beginning that doesn't do anything. In the beginning, it won't do anything interesting, and look like it should be removed, and many functions of this type are never changed. But later, if you realize that really whenever you call Widget.wtr
you need to strip some special characters out, it's no big deal - it's already a function, you just add that in and you're done.
TL;DR This could just be a wise programmer planning ahead for future changes.