Just as added information, for future reference, I will post about how to change the locations of existing WorkPoints, by code, that were created directly within an assembly.
When you iterate through all the WorkPoints in an assembly, each individual WorkPoint object has some properties that are essentially just for reference (ReadOnly), and some that we can actually use to change them. For example, the WorkPoint.Point property is ReadOnly, so we can not set a different Point object as its value, and trying to change the properties of that returned Point object directly will not work either, becaues it is a 'transient' (temporary / mathematical) object that is not held onto. But there is still a way to change it indirectly. When we check its WorkPoint.DefinitionType property, which returns a variation of the WorkPointDefinitionEnum, we will find out that it's always a 'kAssemblyWorkPoint' type, which informs us about the type of work point definition to expect from the WorkPoint.Definition property. Then we can create a variable to hold onto that definition, and set its Type as AssemblyWorkPointDef, and use that WorkPoint.Definition property to set that variable's value. Once we have that, we can use its AssemblyWorkPointDef.Point property, which is Read/Write, allowing us to set a different Point object as its value. The other Point object we may set as its value can be obtained from some other proxy geometry that exists within the assembly, if that is your goal, but as mentioned before, this update step would likely need to be ran (one way or another), whenever either the part geometry changes, &/or when the component occurrence representing that part moves within the assembly, to keep it accurate. You will also notice that the 'definition' has a 'constraints' collection associated with it (AssemblyWorkPointDef.Constraints). Unfortunately that is another ReadOnly property which only returns an AssemblyConstraintsEnumerator type object, which does not give us any options to create new constraints that would be associated with this WorkPoint.
Another way to move that fixed WorkPoint, which is likely slightly simpler/easier, is by using the WorkPoint.SetFixed method. Even though that method works, the very similar WorkPoint.SetByPoint method will throw an error, because it is one of those that is not supported for use in assemblies right now.
Wesley Crihfield

(Not an Autodesk Employee)