Check your recovery plans and the maintenance plans. In some cases all transactions are logged causing huge files. Google on "SET RECOVERY SIMPLE". I never had problems with shrinking. Maintenance plans can be used for periodically reindexing and shrinking.
Problem is caused by LOB/nvarchar(max) columns. Deleting records does not release the occupied space in that case. Shrinking does not have any effect on this.
The solution is to rename the existing table from A to B, create a new table A identical to B, copy (use INSERT) all records from B to A. (re)create indexes on A.
In one of our cases it reduced the table size from 54GB to 4GB.
As far as I know shrink isn't dangerous and is ment for this, just don't use it every day since that would be counterproductive, but if you do this once in a while it could solve your issue. Why don't you try it in a test environment?