If the PM has edit access to the project, they can see / update costs to. If you limited them to only edit project plans in Project Online PWA and you were using the Project Permission mode you could ensure they only have access to Project PWA views that had no costs fields included. But if they are editing projects via Project Desktop they will be able to edit local views and see / edit all fields.
So you could use the Project permission mode, prevent Project Managers connecting using Project Desktop so that they only use PWA to edit / view projects in views where cost columns are not displayed then Service Managers use Project Desktop and or PWA to view / edit projects and have view in PWA that display costs?
There are plenty of options for handling costs outside of project but it really depends on the business requirements. You could build something in SharePoint lists on the associated project site, build something in PowerApps (model or canvas) or build an application in Azure and store the data in an Azure SQL DB.