Using the vanilla dashboard options available on Hubitat / C7 hub.
For devices that expose a Refresh option in their driver (switches for example), is there an explicit reason why said refresh is not exposed on a dashboard tile for said device? I can imagine space savings to be a driving factor. I've seen several posts related to adding dedicated refresh tiles that run automations to perform the refresh (which I've done), but seems odd to have to eat more dashboard space for a dedicated tile to refresh a device that already has a tile present... Going into the driver for a device isn't a huge issue when you're on the local network, but obviously becomes an issue when not local.
For my personal experience, having come from ST, where the refresh for a device was always available from the mobile app / device as long as the device supported it, this was probably one of the more frustrating differences during and post migration to Hubitat until I was really comfortable with the interface and how to work my way around things. It may be helpful to consider adding this feature in a future update to the current vanilla dashboard tiles (assuming I haven't overlooked this feature).
IIRC on ST you could turn things on/off from the main screen, but any other functions you had to bring up the device for unless you created a shortcut tile to do it (only on my first cup of coffee so forgive me if I'm recalling incorrectly). As to an option to help you, you can create tiles that overlay all or part of another tile to combine information and functionality in a one tile space using a little CSS.
You are correct: on the "Classic" ST app, if the device had a refresh option, it was on it's device space, not the main list. The main difference is that you could get to that device page with a single tap from that menu, whether local or not to your network. That isn't possible with the Hubitat app today without access to the local web GUI (many extra taps, and only when local). The CSS change is a good idea (I haven't played with that at all yet and probably should, but I suspect isn't everyone's cup of tea...).
It's just extra steps or work arounds necessary on Hubitat to get similar functionality that I found to be helpful to have as I was migrating over from ST. That said, I've rarely needed that refresh option since the migration (but when I do, it's of course to troubleshoot something, so any extra steps to do that doesn't help the situation).
The local aspect of the hub, while solving some issues, does introduce some other challenges and opportunities. VPN solves some of them, but others like multiple clicks to get places have to have other creative solutions applied.
I guess I am not sure why you would even need to do this? Is this a Zwave (non-plus) device where they don't report instant status?
Historically yes, they have been related to troubleshooting non-plus devices. I have since removed all of my non-plus devices, which is one of the reasons I rarely need quick access to this. I irregularly have issues with one of my Zooz double switch devices where one side will not properly update (need to re-flash it probably). When I run into that issue, refresh is a quick way to ensure it's current state.
I get your point though: having quick access to refresh shouldn't be needed. I've seen many conversations on here about the philosophy of needing a dashboard, GUIs in general, when automations are set up correctly. I understand those viewpoints as well. There is definitely a balance needed between KISS and function. Again, this is just something that seems basic to me that I think some may find helpful.