Both are perfectly valid ways of getting the tool's position on the server.
There are other ways too. For example, if you create a script inside the tool itself, you could do:
local tool = script.Parent
local position = tool.Handle.Position
Each approach has its pros and cons.
Remote event pros:
- Easier to handle multiple different tools
- Client has control over when to fire the RE/activate the tool
- The behavior associated with the tool is in one place, so it's easier to change and more consistent
Cons:
- Slight latency, since the event has to get fired by the client and go through to the server
- Program flow might not be intuitive depending on the context of the problem
Server-side (the one in your question) pros:
- Simple, direct access to tool and its position
Cons:
- Harder to handle if the player owns many tools. Not only do you have to find the tool, but you have to make sure the tool is the right tool
So with those considerations in mind, it is completely up to you to decide which approach to go with. Depending on the situation, any of the approaches might work. Good luck!